array_walk_recursive
array
Функции для работы с массивами
PHP Manual

# array_walk

(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
Функции для работы с массивами
PHP Manual