Array walk()
array_walk
(PHP 4, PHP 5, PHP 7, PHP 8)
array_walk — Tillämpa en användardefinierad funktion på varje medlem i en array
Beskrivning
array_walk(array|object &$array, callable $callback, mixed $arg = null): true Tillämpar den användardefinierade callback-funktionen på varje element i arrayen.
array_walk påverkas inte av arrayens interna pekare. array_walk går igenom hela arrayen oberoende av pekarens position.
Parametrar
array Indata-arrayen.
callback Typiskt sett tar callback två parametrar. Värdet på arrayparametern som den första, och nyckeln/index som den andra.
Notera: Om callback behöver arbeta med arrayens verkliga värden, specificera den första parametern av callback som en referens. Då kommer alla ändringar som görs på dessa element att ske i den ursprungliga arrayen själv.
Notera: Många interna funktioner (till exempel strtolower()) kommer att generera en varning om fler än det förväntade antalet argument skickas in och de är inte direkt användbara som en callback.
Endast värdena i arrayen kan potentiellt ändras; dess struktur kan inte ändras, d.v.s. programmeraren kan inte lägga till, ta bort eller omordna element. Om callback inte respekterar detta krav är funktionens beteende odefinierat och oförutsägbart.
arg Om det valfria arg-parametern tillhandahålls, kommer den att skickas som den tredje parametern till callback.
Returvärden
Returnerar alltid true.
Fel/Undantag
Från och med PHP 7.1.0 kommer ett ArgumentCountError att kastas om callback-funktionen kräver fler än 2 parametrar (värdet och nyckeln till arraymedlemmen), eller fler än 3 parametrar om arg också skickas. Tidigare skulle i detta fall ett fel av nivå E_WARNING genereras varje gång array_walk anropar callback.
Ändringslogg
Version Beskrivning 8.2.0 Returtypen är nu true; tidigare var det bool. 8.0.0 Om callback förväntar sig att den andra eller tredje parametern ska skickas med referens, kommer denna funktion nu att avge en E_WARNING.
Exempel
Exempel #1 array_walk-exempel
<?php $frukter = array("d" => "citron", "a" => "apelsin", "b" => "banan", "c" => "äpple"); function test_alter(&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; } function test_print($item2, $key) { echo "$key. $item2\n"; } echo "Före ...:\n"; array_walk($frukter, 'test_print'); array_walk($frukter, 'test_alter', 'frukt'); echo "... och efter:\n"; array_walk($frukter, 'test_print'); ?>
Exempel #2 array_walk-exempel med anonym funktion
<?php $element = ['a', 'b', 'c']; array_walk($element, function ($value, $key) { echo "{$key} => {$value}\n"; }); ?>