Курсор массива
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().
key
Функция возвращает индекс текущего элемента массива.
Синтаксис :
mixed key(array arr);
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");