Перемещение по массиву

May 4, 2010 by admin Комментировать »

Для перебора элементов массива существует уже описанная ранее в данной кни­ге конструкция foreach. Однако перемещаться по массиву можно не только с ее помощью. Иногда бывает необходимо вручную обойти массив, переместить указа­тель на первый или последний элемент.

Массив по своей сути представляет набор элементов, при переборе которого су­ществует указатель (pointer), определяющий, с каким элементом массива в дан­ный момент проводится операция. Основные функции для "ручного" обхода масси­ва имеют "говорящие" названш!: reset (), end (), prev (), next (), current (). Рассмотрим пример ручного обхода массива.

<?php

$а = array("РНР","С","С++","Java","VB"); echo "В нормальном порядке: ";

reset($а);

while (current($а)) {

echo current($а) . " "; next($а);

)

echo "<br>B обратном порядке: ";

end($a);

while (current(Sa)) {

echo current($a) . " "; prev($a);

}

?>

Данный код дважды обходит массив $а. Сначала указатель перемещается в начало массива с помощью функции reset (), хотя в ней в данном случае не было необходимости — указатель итак по умолчанию находится на первом элементе. Затем выводится текущий элемент с помощью функции current (), и указатель смещается на один элемент вперед с помощью функции next (). Если элементы в массиве кончаются, то функция current () возвращает значение FALSE, и цикл прекращается.

Во второй части кода было выполнено обратное действие — указатель сразу установлен в конец массива с помощью функции end (). и перемещение происходит от конца к началу с помощью функции prev (). В качестве аргумента для всех функций передается имя массива.

Бывают ситуации, когда к каждому элементу массива нужно применить какие-либо действия. Допустим, с каждым элементом массива нужно совершить матема­тическую операцию. В этом поможет функция array_walk (). Формат записи сле­дующий.

bool array_walk ( array &array, callback funcname [, mixed userdata] )

Рассмотрим пример по вычислению суммы подоходного налога для зарплат со­трудников, которые представлены в виде массива

<?php

//исходный массив $salary = array(

"Иванов" => 7000,

"Петров" => 10000,

"Сидорова" => 7000

);

//функция, которая будет применена к каждому элементу

function coinpute_tax($itein, $кеу) { $tax_suin = Sitem * 0.13,-

echo $key . " заплатит " . $tax_suin . " p.<br>";

}

array_walk($salary,"compute_tax"); ?>

В пользовательской функции, которая будет применена к каждому элементу, можно обращаться к ключу, значению текущего элемента и переданному пользова­тельскому значению userdata. Первый, второй и третий параметры — это значе­ние элемента, ключ и значение userdata соответственно. В функции, вызываемой array_walk (), нельзя изменять состояние массива, т.е. добавлять новые элементы или удалять уже имеющиеся.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты