array_walk
Wendet eine Benutzerfunktion an jedem Element eines Arrays an
Beschreibungintarray_walkarrayarraycallbackfunctionmixeduserdata
Wendet die mittels function angegebene
Benutzerfunktion für jedes Element von array
an. function benötigt zwei Parameter. Der Wert
von array wird als erster übergeben, und der
Schlüssel/Index als zweites. Ist der optionale Parameter
userdata angegeben, so wird er als dritter
Parameter an die Funktion function übergeben.
Sollte function mehr als die ihr übergebenen
Parameter benötigen, wird bei jedem Aufruf von
function seitens array_walk
eine Fehlermeldung der Stufe
E_WARNING generiert. Diese Warnmeldungen können unterdrückt
werden, indem man dem Funktionsaufruf von
array_walk den Operator @ voranstellt,
oder error_reporting verwendet.
Wenn function direkt mit den Werten des
Arrays arbeiten soll, spezifizieren Sie den ersten Parameter
von function als Referenz. Dann werden alle
Änderungen an diesen Elementen direkt in dem originalen Array
durchgeführt.
Die Modifizierung des Arrays aus function
heraus könnte ein unvorhersehbares Verhalten hervorrufen.
Die Übergabe des Schlüssels und von userdata
an function wurde mit PHP 4.0.0 eingeführt.
array_walk ist nicht von dem internen
Arrayzeiger von array betroffen.
array_walk geht ungeachtet der Zeigerposition das
gesamte Array durch. Um den Zeiger zurückzusetzen, verwenden Sie
reset. In PHP 3 setzt
array_walk den Zeiger zurück.
Von der Benutzerfunktion aus darf das Array selbst nicht geändert
werden, wie zum Beispiel durch Hinzufügen oder Löschen eines
Elementes, etc. Wird das auf array_walk
angewendete Array geändert, so ist das Verhalten dieser Funktion
undefiniert und unvorhersagbar.
array_walk
"Zitrone", "a"=>"Orange", "b"=>"Banane", "c"=>"Apfel");
function test_alter (&$item1, $key, $prefix) {
$item1 = "$prefix: $item1";
}
function test_print ($item2, $key) {
echo "$key. $item2 \n";
}
echo "Vorher ...:\n";
array_walk ($fruits, 'test_print');
array_walk ($fruits, 'test_alter', 'Frucht');
echo "... und nachher:\n";
array_walk ($fruits, 'test_print');
?>
]]>
Das obige Programm wird folgendes ausgeben:
Siehe auch list,
foreach,
each und call_user_func_array.