array_walk

(PHP 4, PHP 5, PHP 7, PHP 8)

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

Описание

array_walk(array|object&$array, callable$callback, mixed$arg = null): bool

Применяет пользовательскую функцию callback к каждому элементу массива array.

array_walk() не подвержена влиянию внутреннего указателя массива array. array_walk() обойдёт все элементы массива независимо от позиции указателя.

Список параметров

array

Входной массив.

callback

Обычно функция callback принимает два параметра. В качестве первого параметра идёт значение элемента массива array, а ключ - в качестве второго.

Замечание:

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

Замечание:

Множество встроенных функций (например, strtolower()) выводят предупреждение, если им передано больше параметров, чем они ожидают, или которые не могут непосредственно использоваться в callback.

Потенциально изменены могут быть только значения массива array; структура самого массива не может быть изменена, то есть нельзя добавить, удалить или поменять порядок элементов. Если callback-функция не соответствует этому требованию, поведение данной функции станет неопределённым и непредсказуемым.

arg

Если указан необязательный параметр arg, он будет передан в качестве третьего параметра в callback-функцию callback.

Возвращаемые значения

Возвращает true

Ошибки

Начиная с PHP 7.1.0, в случае если callback-функция требует больше двух параметров (значение и ключ элемента массива) или более 3 параметров, если также передаётся параметр arg, будет выброшено исключение ArgumentCountError. Ранее в таком случае при каждом вызове callback, генерировалась ошибка уровня E_WARNING.

Список изменений

ВерсияОписание
8.0.0 Если параметр 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\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

Пример #2 Пример использования array_walk() с анонимной функцией

<?php
$elements
= ['a', 'b', 'c'];

array_walk($elements, function ($value, $key) {
echo
"{$key} => {$value}\n";
});

?>

Результат выполнения приведённого примера:

0 => a 1 => b 2 => c

Смотрите также

  • array_walk_recursive() - Рекурсивно применяет пользовательскую функцию к каждому элементу массива
  • iterator_apply() - Вызывает функцию для каждого элемента в итераторе
  • list() - Присваивает переменным значения похожим на массивы синтаксисом
  • each() - Возвращает текущую пару ключа и значения массива и сдвигает указатель на одну позицию вперёд
  • call_user_func_array() - Вызывает callback-функцию с массивом параметров
  • array_map() - Применяет callback-функцию ко всем элементам указанных массивов
  • foreach
To Top