Курсор массива

Курсор массива

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) . "<br />n"; // "step one"

// skip two steps

next($array);

next($array);

echo current($array) . "<br />n"; // "step three"

// reset pointer, start again on step one

reset($array);

echo current($array) . "<br />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.

Пример использования функции 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)."*<br />";

}

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 => $valn";

}

?>

Пример выведет:

a => appleb => bananac => 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<br />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. lemona. orangeb. bananac. apple... and after:d. fruit: lemona. fruit: orangeb. fruit: bananac. fruit: apple

Функция поддерживается PHP 3 = 3.0.3, PHP 4, PHP 5