Справочник по PHP : Функции работы с данными : Работа с массивами : Курсор массива
смотрим также
Материал из Справочник Web-языков
Содержание |
reset
Производит сброс курсора массива.
Синтаксис:
mixed reset(array arr)
Функция reset() устанавливает внутренний курсор массива arr на его начало и возвращает значение начального элемента.
Пример использования функции reset():
<?php $array = array("step one", "step two", "step three", "step four"); // by default, the pointer is on the first element echo current($array) . "
n"; // "step one" // skip two steps next($array); next($array); echo current($array) . "
n"; // "step three" // reset pointer, start again on step one reset($array); echo current($array) . "
n"; // "step one" ?>
Функция поддерживается PHP 3, PHP 4, PHP 5
end
Производит перенос курсора в конец массива.
Синтаксис:
mixed end(array arr)
Функция end() устанавливает внутренний курсор массива arr на последний элемент и возвращает значение этого элемента.
Пример использования функции end():
<?php $fruits = array("apple", "banana", "cranberry"); echo end($fruits); // cranberry ?>
Функция поддерживается PHP 3, PHP 4, PHP 5
next
Производит перенос курсора вперед.
Синтаксис:
mixed next(array arr)
Функция next() возвращает значение элемента, на котором в данный момент находится курсор, и перемещает курсор массива на следующий элемент. Возвращает false, если элементов больше не осталось.
Также false возвращается, если встречается элемент с пустым значением, следовательно для корректной работы с массивом, содержащим пустые элементы, лучще использовать функцию each().
Пример использования функции next():
<?php $transport = array("foot", "bike", "car", "plane"); $mode = current($transport); // $mode = "foot"; $mode = next($transport); // $mode = "bike"; $mode = next($transport); // $mode = "car"; $mode = prev($transport); // $mode = "bike"; $mode = end($transport); // $mode = "plane"; ?>
Функция поддерживается PHP 3, PHP 4, PHP 5
prev
Производит перенос курсора назад и возвращает предыдущее значени.
Синтаксис:
mixed prev(array arr)
Функция prev() перемещает курсор массива на предыдущий элемент и возвращает его значение. Возвращает false, если элементов больше не осталось.
Также false возвращается, если встречается элемент с пустым значением, следовательно для корректной работы с массивом, содержащим пустые элементы, лучще использовать функцию each().
Пример использования функции prev():
<?php $transport = array("foot", "bike", "car", "plane"); $mode = current($transport); // $mode = "foot"; $mode = next($transport); // $mode = "bike"; $mode = next($transport); // $mode = "car"; $mode = prev($transport); // $mode = "bike"; $mode = end($transport); // $mode = "plane"; ?>
Функция поддерживается PHP 3, PHP 4, PHP 5
current
Определение текущего элемента массива.
Синтаксис:
mixed current(array arr)
Каждый массив имеет внутренний указатель(курсор) текущего элемента. Обычно он указывает на первый элемент массива.
Функция current() возвращает значение элемента, на котором в данный момент находится курсор массива, при этом не сдвигая курсор.
Если указатель находиться за пределами массива, или массив пустой, то функция возвратит FALSE.
Предупреждение: данную функцию нельзя использовать для определения конца массива, т.к. если ячейка пуста, функция так же вернёт false.
Пример использования функции current():
<?php $transport = array("foot", "bike", "car", "plane"); $mode = current($transport); // $mode = "foot"; $mode = next($transport); // $mode = "bike"; $mode = current($transport); // $mode = "bike"; $mode = prev($transport); // $mode = "foot"; $mode = end($transport); // $mode = "plane"; $mode = current($transport); // $mode = "plane"; ?>
Функция поддерживается PHP 3, PHP 4, PHP 5
pos
Определение текущего элемента массива.
Синтаксис:
mixed pos(array arr)
Эта функция синоним функции current().
key
Функция возвращает индекс текущего элемента массива.
Синтаксис:
mixed key(array arr)
Функция key() возвращает индекс текущего элемента массива.
Пример использования функции key():
<?php $array = array( "fruit1" => "apple", "fruit2" => "orange", "fruit3" => "grape", "fruit4" => "apple", "fruit5" => "apple"); // этот цикл пройдется по всему массиву // и выведет имя ключа элемента массива // значение которого равно "apple" while ($fruit_name = current($array)) { if ($fruit_name == "apple") { echo key($array)."*
"; } next($array); } ?>
Функция поддерживается PHP 3, PHP 4, PHP 5
each
Получение текущего элемента массива.
Синтаксис:
array each(array arr)
Функция each() возвращает пару"индекс и значение" текущего элемента массива, на который указывает внутренний курсор, и сдвигает курсор массива на следующий элемент.
Пример использования функции each():
<?php $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese"); $bar = each($foo); print_r($bar); ?>
Массив $bar будет иметь ключи и значения:
Array ( [1] => bob [value] => bob [0] => 0 [key] => 0 )
<?php $foo = array("Robert" => "Bob", "Seppo" => "Sepi"); $bar = each($foo); print_r($bar); ?>
Массив $bar будет иметь ключи и значения:
Array ( [1] => Bob [value] => Bob [0] => Robert [key] => Robert )
Пример использования функции each():
Пролистывание массива
<?php $fruit = array("a" => "apple", "b" => "banana", "c" => "cranberry"); reset($fruit); while (list($key, $val) = each($fruit)) { echo "$key => $val"; } ?>
Пример выведет:
a => apple b => banana c => cranberry
Функция поддерживается PHP 3, PHP 4, PHP 5
array_walk
Применение пользовательской функции к элементам массива.
Синтаксис:
bool array_walk(array arr, callback function [, mixed userdata])
Функция array_walk() применяет пользовательскую функцию function к каждому элементу массива arr. В пользовательскую функцию передаются три или два (в случае, если аргумент userdata не указан) аргумента: значение текущего элемента, его индекс и аргумент userdata.
В случае, если function требует более трех аргументов, при каждом ее вызове будет выдаваться предупреждение. Чтобы блокировать выдачу этих предупреждений, поставте знак "@" перед функцией array_walk() или воспользуйтесь функцией error_reporting().
Функция function будет получать значения и индексы массива arr по значению, т.е. не сможет вносить в него изменения. Если это необходимо, передайте аргумент arr по ссылке, указав перед его именем "&", и тогда все изменения отразяться в массиве.
В PHP 4 необходимо явно вызывать функцию reset(), чтобы установить внутренний курсор на первый элемент.
Пример использования функции array_walk():
<?php $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); function test_alter(&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; } function test_print($item2, $key) { echo "$key. $item2
n"; } echo "Before ...:n"; array_walk($fruits, "test_print"); array_walk($fruits, "test_alter", "fruit"); echo "... and after:n"; array_walk($fruits, "test_print"); ?>
Приведенный пример выведет следующее:
Before ...: d. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple
Функция поддерживается PHP 3 >= 3.0.3, PHP 4, PHP 5