Работа с массивами : Курсор массива
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");