array_walkПрименяет пользовательскую функцию к каждому элементу массива
&reftitle.description;
truearray_walkarrayobjectarraycallablecallbackmixedarg&null;
Функция применяет пользовательскую callback-функцию к каждому
элементу массива array.
Функция array_walk не зависит от внутреннего
указателя массива array.
Функция array_walk обойдёт каждый элемент массива
независимо от позиции указателя.
&reftitle.parameters;
array
Входной массив.
callback
При вызове функции только с двумя аргументами в callback-функцию
передаётся два аргумента. Первый — значение элемента массива array,
а второй — ключ или индекс элемента.
Первый параметр callback-функции
определяют как ссылку,
чтобы callback-функция работала не с копией,
а с исходным значением массива, тогда изменения
элементов внутри функции обратного вызова изменят сам исходный массив.
Многие внутренние функции наподобие strtolower
выбрасывают ошибку, если количество переданных аргументов превышает
количество параметров функции, поэтому такие внутренние
функции нельзя указывать как значение параметра callback.
Разрешается изменять только значения массива
array; структуру самого массива изменить
нельзя. Программисту нельзя добавлять, удалять или изменять порядок
элементов. Поведение функции становится неопределённым и непредсказуемым,
если callback-функция не соответствует этому требованию.
arg
Необязательный параметр arg,
передаётся в callback-функцию как третий аргумент,
если указали.
&reftitle.returnvalues;
&return.true.always;
&reftitle.errors;
Начиная с PHP 7.1.0 функция выбрасывает исключение ArgumentCountError,
если callback-функция требует больше двух параметров, тогда как передаются
только значение и ключ элемента массива, или больше 3 параметров, если также передаётся
аргумент arg. Раньше при таких условиях каждый раз, когда функция
array_walk вызывала callback-функцию,
генерировалась ошибка уровня E_WARNING.
&reftitle.changelog;
&Version;&Description;
&return.type.true;
8.0.0
Теперь функция выдаёт ошибку уровня E_WARNING,
если параметр callback ожидает,
что значение второго или третьего аргумента передадут по ссылке.
&reftitle.examples;
Пример обработки значений при обходе массива функцией array_walk
"лимон", "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');
?>
]]>
&example.outputs;
Пример использования функции array_walk с анонимной функцией
{$value}\n";
});
?>
]]>
&example.outputs;
a
1 => b
2 => c
]]>
&reftitle.seealso;
array_walk_recursiveiterator_applylisteachcall_user_func_arrayarray_map&foreach;