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