(PHP 4, PHP 5, PHP 7, PHP 8)
array_walk — Применяет пользовательскую функцию к каждому элементу массива
Функция применяет пользовательскую callback-функцию к каждому
элементу массива array.
Функция array_walk() не зависит от внутреннего
указателя массива array.
Функция array_walk() обойдёт каждый элемент массива
независимо от позиции указателя.
arrayВходной массив.
callback
Обычно callback-функция принимает два аргумента.
Первым — значение элемента массива array,
а вторым — ключ или индекс элемента.
Замечание:
Первый параметр
callback-функции определяют как ссылку, если требуется, чтобыcallback-функция изменяла значения исходного массива. Тогда изменения элементов внутри функции обратного вызова изменят сам исходный массив.
Замечание:
Многие внутренние функции наподобие strtolower() выдают предупреждение, если количество аргументов, которые им передают, превышает количество аргументов, которые они ожидают, поэтому такие внутренние функции нельзя указывать как значение параметра
callback.
Разрешается изменять только значения массива
array; структуру самого массива изменить
нельзя. Программисту нельзя добавлять, удалять или изменять порядок
элементов. Поведение функции будет неопределённым и непредсказуемым,
если callback-функция не соответствует этому требованию.
arg
Необязательный параметр arg,
передаётся в callback-функцию как третий аргумент,
если указали.
Функция возвращает логическое значение true.
Начиная с PHP 7.1.0 функция выбрасывает исключение ArgumentCountError,
если callback-функция требует больше двух параметров, тогда как передаются
только значение и ключ элемента массива, или больше 3 параметров, если также передаётся
аргумент arg. Раньше при таких условиях каждый раз, когда функция
array_walk() вызывала callback-функцию,
генерировалась ошибка уровня E_WARNING.
| Версия | Описание |
|---|---|
| 8.2.0 |
Значение возврата теперь принадлежит типу true; раньше значение принадлежало типу bool.
|
| 8.0.0 |
Теперь функция выдаёт ошибку уровня E_WARNING,
если параметр callback ожидает,
что значение второго или третьего аргумента передадут по ссылке.
|
Пример #1 Пример использования функции array_walk()
<?php
$fruits = array("d" => "лимон", "a" => "апельсин", "b" => "банан", "c" => "яблоко");
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', 'фрукт');
echo "\n…и после:\n";
array_walk($fruits, 'test_print');
?>Результат выполнения приведённого примера:
До:… d. лимон a. апельсин b. банан c. яблоко …и после: d. фрукт: лимон a. фрукт: апельсин b. фрукт: банан c. фрукт: яблоко
Пример #2 Пример использования функции array_walk() с анонимной функцией
<?php
$elements = ['a', 'b', 'c'];
array_walk($elements, function ($value, $key) {
echo "{$key} => {$value}\n";
});
?>Результат выполнения приведённого примера:
0 => a 1 => b 2 => c
foreach