(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