array_walk (PHP 3>= 3.0.3, PHP 4 ) array_walk --
Wendet eine Benutzerfunktion an jedem Element eines Arrays an
Beschreibungint array_walk ( array array, callback function [, mixed userdata])
Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.
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.
Anmerkung:
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.
Anmerkung:
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.
Beispiel 1. array_walk()
<?php $fruits = array ("d"=>"Zitrone", "a"=>"Orange", "b"=>"Banane", "c"=>"Apfel");
function test_alter (&$item1, $key, $prefix) { $item1 = "$prefix: $item1"; }
function test_print ($item2, $key) { echo "$key. $item2<br>\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:
Vorher ...: d. Zitrone a. Orange b. Banane c. Apfel ... und nachher: d. Frucht: Zitrone a. Frucht: Orange b. Frucht: Banane c. Frucht: Apfel
|
|
Siehe auch list(),
foreach,
each() und call_user_func_array().
|