(PHP 4, PHP 5)
array_walk — Применяет пользовательскую функцию к каждому элементу массива
Применяет пользовательскую функцию funcname к каждому элементу массива array.
array_walk() не подвержена влиянию внутреннего указателя массива array. array_walk() обойдёт все элементы массива независимо от позиции указателя.
Входной массив.
Обычно функция funcname принимает два параметра. В качестве первого параметра идет значение элемента массива array, а ключ - в качестве второго.
Замечание:
Если требуется, чтобы функция funcname изменила значения в массиве, определите первый параметр funcname как ссылку. Тогда все изменения будут применены к элементам оригинального массива.
Замечание:
Множество встроенных функций (например, strtolower()) выводят предупреждение, если им передано больше параметров, чем они ожидают, или которые не могут непосредственно использоваться в funcname.
Потенциально изменены могут быть только значения массива array; структура самого массива не может быть изменена, то есть нельзя добавить, удалить или поменять порядок элементов. Если callback-функция не соответствует этому требованию, поведение данной функции станет неопределённым и непредсказуемым.
Если указан необязательный параметр userdata, он будет передан в качестве третьего параметра в callback-функцию funcname.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Если функция funcname требует больше параметров, чем передано на самом деле, каждый раз, когда array_walk() будет вызывать funcname, будет генерироваться ошибка уровня E_WARNING. Эти предупреждения могут быть подавлены добавлением оператора управления ошибками PHP @ в вызов array_walk(), или использованием error_reporting().
Пример #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 "До ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... и после:\n";
array_walk($fruits, 'test_print');
?>
Результат выполнения данного примера:
До ...: d. lemon a. orange b. banana c. apple ... и после: d. fruit: lemon a. fruit: orange b. fruit: banana c. fruit: apple