Руководство по PHP
Пред. |  | След.

# array_walk

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

array_walk -- Применить пользовательскую функцию к каждому члену массива

## Описание

bool array_walk ( array &array, callback funcname [, mixed userdata] )

Возвращает `TRUE` в случае успешного завершения или `FALSE` в случае возникновения ошибки.

Применяет пользовательскую функцию `funcname` к каждому элементу массива `array`. Обычно у функции `funcname` два параметра. Значение массива `array` в качестве первого параметра, и ключ/индекс в качестве второго. Если указан дополнительный параметр `userdata`, он будет передан в качестве третьего параметра в функцию обратного вызова `funcname`.

Если в функцию `funcname` должно быть передано больше параметров, чем передано на самом деле, ошибка уровня E_WARNING будет генерироваться каждый раз как array_walk() будет вызывать `funcname`. Эти предупреждения могут быть подавлены добавлением оператора управления ошибками PHP @ в вызов array_walk(), или использованием error_reporting().

> Замечание: Если требуется, чтобы функция `funcname` изменила значения в массиве, определите первый параметр `funcname` как ссылку. Тогда все изменения будут применены к элементам массива.

> Замечание: Передача в `funcname` параметров key и userdata была добавлена в версии 4.0.0

array_walk() не изменяет внутренний указатель массива `array`. array_walk() обойдёт все элементы массива независимо от позиции указателя. Для того чтобы сбросить указатель, используйте функцию reset(). В PHP 3 array_walk() сбрасывает указатель.

Вы не сможете изменить непосредственно массив при помощи функции обратного вызова, то есть добавить и удалить элементы, уничтожить значения элементов и т.д. Если массив, к которому применяется array_walk(), изменится, то поведение этой функции станет неопределённым и непредсказуемым.

Пример 1. Пример использования 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. lemon a. orange b. banana c. apple ... and after: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple`

См. также array_walk_recursive(), create_function(), list(), foreach, each(), call_user_func_array() и array_map().

Пред. | Начало | След.
array_walk_recursive | Уровень выше | array