Array walk()

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

array_walk

(PHP 4, PHP 5, PHP 7, PHP 8)

array_walk — Tillämpa en användarspecifik funktion på varje medlem i en array

Beskrivning

array_walk(array|object &$array, callable $callback, mixed $arg = null): true Använder den användardefinierade callback-funktionen på varje element i arrayen.

array_walk påverkas inte av arrayens interna pekare. array_walk kommer att gå igenom hela arrayen oavsett pekarens position.

Parametrar

array Ingångsarrayen.

callback Vanligtvis tar callback två parametrar. Arrayparameterns värde är den första och nyckeln/index är den andra.

Obs: Om callback behöver arbeta med de faktiska värdena i arrayen, ange den första parametern av callback som en referens. Ändringar som görs på dessa element kommer då att göras i den ursprungliga arrayen själv.

Obs: 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 beteendet för denna funktion odefinierat och oförutsägbart.

arg Om den 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 för 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 som referens, kommer denna funktion nu att generera en E_WARNING.

Exempel

Exempel #1 Exempel på array_walk

<?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 Exempel på array_walk med anonym funktion

<?php
$element = ['a', 'b', 'c'];

array_walk($element, function ($value, $key) {
  echo "{$key} => {$value}\n";
});

?>

Se även

  • array_walk_recursive() - Tillämpa en användarfunktion rekursivt på varje medlem i en array
  • iterator_apply() - Anropa en funktion för varje element i en iterator
  • list() - Tilldela variabler som om de var en array
  • each() - Returnera det nuvarande nyckel- och värdeparet från en array och framskrid arraypekaren
  • call_user_func_array() - Anropa en callback med en array av parametrar
  • array_map() - Tillämpar callback på elementen i de givna arrayerna
  • foreach