Работа с массивами : Курсор массива
reset
Производит сброс курсора массива.
Синтаксис :
mixed reset(array arr);
Функция reset() устанавливает внутренний курсор массива
arr на его начало и возвращает значение начального
элемента.
end
Производит перенос курсора в конец массива.
Синтаксис :
mixed end(array arr);
Функция end() устанавливает внутренний курсор массива
arr на последний элемент и возвращает значение начального
элемента.
next
Производит перенос курсора вперед.
Синтаксис :
mixed next(array arr);
Функция next() возвращает значение элемента, на котором в
данный момент находится курсор, и перемещает курсор массива на
следующий элемент. Возвращает false, если элементов больше не
осталось.
Также false возвращается, если встречается элемент с пустым
значением, следовательно для корректной работы с массивом,
содержащим пустые элементы, лучще использовать функцию each().
prev
Производит перенос курсора назад.
Синтаксис :
mixed prev(array arr);
Функция prev() возвращает значение элемента, на котором в
данный момент находится курсор, и перемещает курсор массива на
предыдущий элемент. Возвращает false, если элементов больше не
осталось.
Также false возвращается, если встречается элемент с пустым
значением, следовательно для корректной работы с массивом,
содержащим пустые элементы, лучще использовать функцию each().
current
Определение текущего элемента массива.
Синтаксис :
mixed current(array arr);
Функция current() возвращает значение элемента, на
котором в данный момент находится курсор массива, при этом не
сдвигая курсор.
Функция возвратит false, если курсор оказался вне пределов
массива, или массив не имеет элементов.
pos
Определение текущего элемента массива.
Синтаксис :
mixed pos(array arr);
Эта функция синоним функции current().
each
Получение текущего элемента массива.
Синтаксис :
array each(array arr);
Функция each() возвращает в массиве пару "индекс и
значение" текущего элемента массива, на который указывает
внутренний курсор, и сдвигает курсор массива на следующий
элемент. Возващаемый массив имеет четыре элемента:
[0] => индекс
[1] => "значение"
[key] => индекс
[value] => "значение"
Функция возвращает false, если курсор достиг конца массива.
$foo = array("bob", "fred", "jussi", "joini", "egon", "marliese");
$bar = each($foo);
// теперь $bar = (0=>0, 1=>"bob", key=>0, value=>"bob")
Обычно функцию each() используют в паре с list()
для перебора элементов массива:
reset($HTTP_POST_VARS);
while(list($key, $val) = each($HTTP_POST_VARS)) {
echo "$key = %val<BR>";
}
array_walk
Применение функции к элементам массива.
Синтаксис :
int array_walk(array arr string func, mixed userdata);
Функция array_walk() применяет пользовательскую функцию
func к каждому элементу массива arr. В
пользовательскую функцию передаются три или два (в случае, если
аргумент userdata не указан) аргумента: значение текущего
элемента, его индекс и аргумент userdata.
В случае, если func требует более трех аргументов, при
каждом ее вызове будет выдаваться предупреждение. Чтобы
блокировать выдачу этих предупреждений, поставте знак "@" перед
функцией array_walk() или воспользуйтесь функцией
error_reporting().
Функция func будет получать значения и индексы массива
arr по занчению, т.е. не сможет вносить в него изменения.
Если это необходимо, передайте аргумент arr по ссылке,
указав перед его именем "&", и тогда все изменения отразяться в
массиве.
В PHP 4 необходимо явно вызывать функцию reset(), чтобы
установить внутренний курсор на первый элемент.
$v = array("d"=>"A1", "a"=>"B2", "b"=>"C3", "c"=>"D4");
function test_alter(&$item1, $key, $prefix) { // по ссылке
$item1 = "$prefix $item1";
};
function test_print($item2, $key) {
echo "$key. $item2<BR>";
};
array_walk($v, "test_print");
reset($v);
array_walk($v, "test_alter");
reset($v);
array_walk($v, "test_print");