Forum und email

array_walk

(PHP 4, PHP 5)

array_walk — Pas een gebruikersfunctie toe op elk element van een array

Beschrijving

int array_walk ( array $array , callback $function [, mixed $userdata ] )

Past de door de gebruiker gedefinieerde functie function toe op elk element van de array array. De function ontvangt gewoonlijk twee parameters: een waarde uit array als eerste, en als tweede de key of index. Als de optionele userdata parameter wordt gegeven zal deze als derde parameter worden meegegeven aan de callback function .

Als de function meer parameters nodig heeft dan er aan worden meegegeven wordt er een fout van het niveau E_WARNING gegenereerd elke keer dat array_walk() de function aanroept. Deze waarschuwingen kunnen worden onderdrukt door de PHP error operator @ voor de array_walk() call te zetten, of door de error_reporting() te gebruiken.

Note: Als function moet werken met de eigenlijke waarden van de array kun je de eerste parameter van de function als een reference specificeren. De dingen die worden veranderd in die elementen veranderen dan in de originele array zelf.

Note: Het meegeven van de key en userdata aan de function werd toegevoegd in PHP 4.0.0.

array_walk() is onafhankelijk van de interne array pointer van array . array_walk() zal door de gehele array lopen zonder te letten op de positie van de pointer. Om de pointer te resetten kun je reset() gebruiken. In PHP 3 reset array_walk() de pointer wel.

Gebruikers mogen de array zelf niet veranderen vanuit de callback functie, zoals het toevoegen of verwijderen van een element, of de array waar array_walk() op wordt toegepast unsetten. Als de array toch wordt veranderd is het gedrag van deze functie niet gedefinieerd.

Example#1 array_walk() voorbeeld

<?php
$fruits 
= array ("d"=>"lemon""a"=>"orange""b"=>"banana""c"=>"apple");

function 
test_alter (&$item1$key$prefix) {
    
$item1 "$prefix: $item1";
}

function 
test_print ($item2$key) {
    echo 
"$key. $item2<br>\n";
}

echo 
"Before ...:\n";
array_walk ($fruits'test_print');

array_walk ($fruits'test_alter''fruit');
echo 
"... and after:\n";

array_walk ($fruits'test_print');
?>

De output van bovenstaand programma ziet er zo uit:

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

Zie ook list(), foreach, each() en call_user_func_array().