array_walkStosuje funkcję użytkownika do każdego elementu tablicy
&reftitle.description;
truearray_walkarrayobjectarraycallablecallbackmixedarg&null;
Wykonuje zdefiniowaną przez użytkownika funkcję callback na każdym
elemencie tablicy array.
Na działanie array_walk nie wpływa pozycja wewnętrznego wskaźnika
tablicy array. array_walk
przetworzy wszystkie elementy tablicy niezależnie od pozycji tego wskaźnika.
&reftitle.parameters;
array
Tablica wejściowa.
callback
Zazwyczaj callback przyjmuje dwa parametry.
Pierwszym jest element tablicy array,
natomiast drugim klucz lub numer indeksu tego elementu.
Jeśli callback ma zmieniać wartości tablicy,
należy określić pierwszy parametr callback
jako referencję. W tym
przypadku wszystkie zmiany dokonane przez tą funkcję będą dokonywane
bezpośrednio na oryginalnej tablicy.
Wiele wewnętrznych funkcji (na przykład strtolower)
rzuci wyjątek, jeśli przekazanych zostanie więcej argumentów,
niż oczekiwano i nie nadają się do użycia bezpośrednio jako
callback.
Tylko wartości tablicy array mogą być
zmieniane; jej struktura nie może modyfikowana, czyli np. programista nie może
dodać, usunąć lub zmieniać kolejności elementów. Jeśli funkcja zwrotna nie
respektuje tych wymogów, to jej zachowanie będzie nieokreślone
i nieprzewidywalne.
arg
Jeśli podany zostanie opcjonalny parametr arg,
to zostanie on przekazany jako trzeci parametr do
callback.
&reftitle.returnvalues;
&return.true.always;
&reftitle.errors;
Od PHP 7.1.0 wygenerowany zostanie ArgumentCountError jeśli funkcja callback
wymaga więcej niż 2 parametry (wartość i klucz tablicy)
lub więcej niż 3 parametry jeśli zostały przekazane również arg.
Poprzednio w tym wypadku
zostałby wygenerowany błąd poziomu E_WARNING za każdym razem kiedy
array_walk wywoływałby callback.
&reftitle.changelog;
&Version;&Description;
&return.type.true;
8.0.0
Jeśli callback oczekuje drugiego lub trzeciego parametru przekazanego
przez referencję, wówczas ta funkcja wyemituje błąd E_WARNING.
&reftitle.examples;
Przykład użycia array_walk
"lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$element1, $key, $prefiks)
{
$element1 = "$prefiks: $element1";
}
function test_print($element2, $key)
{
echo "$key. $element2\n";
}
echo "Przed ...:\n";
array_walk ($fruits, 'test_print');
array_walk ($fruits, 'test_alter', 'fruit');
echo "... i po:\n";
array_walk ($fruits, 'test_print');
?>
]]>
&example.outputs;
array_walk przykład z użyciem funkcji anonimowej
{$value}\n";
});
?>
]]>
&example.outputs;
a
1 => b
2 => c
]]>
&reftitle.seealso;
array_walk_recursiveiterator_applylisteachcall_user_func_arrayarray_map&foreach;