array_walk Применить пользовательскую функцию к каждому члену массива Описание boolarray_walk array&array callbackfuncname mixeduserdata &return.success; Применяет пользовательскую функцию 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, изменится, то поведение этой функции станет неопределённым и непредсказуемым. Пример использования <function>array_walk</function> "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'); ?> ]]>
Вывод вышеприведённой программы:
См. также array_walk_recursive, create_function, list, foreach, each, call_user_func_array и array_map.