array_walk
(PHP 4, PHP 5, PHP 7)
array_walk — Применяет заданную пользователем функцию к каждому элементу массива
Описание
Применяет пользовательскую функцию callback
к каждому
элементу массива array
.
array_walk() не подвержена влиянию внутреннего
указателя массива array
.
array_walk() обойдёт все элементы массива
независимо от позиции указателя.
Список параметров
-
array
-
Входной массив.
-
callback
-
Обычно функция
callback
принимает два параметра. В качестве первого параметра идет значение элемента массиваarray
, а ключ - в качестве второго.Замечание:
Если требуется, чтобы функция
callback
изменила значения в массиве, определите первый параметрcallback
как ссылку. Тогда все изменения будут применены к элементам оригинального массива.Замечание:
Множество встроенных функций (например, strtolower()) выводят предупреждение, если им передано больше параметров, чем они ожидают, или которые не могут непосредственно использоваться в
callback
.Потенциально изменены могут быть только значения массива
array
; структура самого массива не может быть изменена, то есть нельзя добавить, удалить или поменять порядок элементов. Если callback-функция не соответствует этому требованию, поведение данной функции станет неопределённым и непредсказуемым. -
userdata
-
Если указан необязательный параметр
userdata
, он будет передан в качестве третьего параметра в callback-функциюcallback
.
Возвращаемые значения
Возвращает true
Ошибки
Начиная с PHP 7.1.0, в случае если callback
-функция
требует больше двух параметров (ключ и значение элемента массива), будет
выброшено исключение ArgumentCountError. Ранее в таком
случае при каждом вызове callback
, генерировалась
ошибка уровня E_WARNING.
Примеры
Пример #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
Смотрите также
- array_walk_recursive() - Рекурсивно применяет пользовательскую функцию к каждому элементу массива
- iterator_apply() - Вызывает функцию для каждого элемента в итераторе
- list() - Присваивает переменным из списка значения подобно массиву
- each() - Возвращает текущую пару ключ/значение из массива и смещает его указатель
- call_user_func_array() - Вызывает callback-функцию с массивом параметров
- array_map() - Применяет callback-функцию ко всем элементам указанных массивов
- foreach