Function.array-walk
Aus PHP-Wiki
array_walk — Wendet eine Benutzerfunktion an jedem Element eines Arrays an
Beschreibung
bool array_walk
( array &$array
, callback $funcname
[, mixed $userdata
] )
Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.
Wendet die mittels funcname
angegebene
Benutzerfunktion für jedes Element von array
an. funcname
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 funcname
übergeben.
Sollte funcname
mehr als die ihr übergebenen
Parameter benötigen, wird bei jedem Aufruf von
funcname
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.
Hinweis:
Wenn funcname
direkt mit den Werten des
Arrays arbeiten soll, spezifizieren Sie den ersten Parameter
von funcname
als Referenz. Dann werden alle
Änderungen an diesen Elementen direkt in dem originalen Array
durchgeführt.
Die Modifizierung des Arrays aus funcname
heraus könnte ein unvorhersehbares Verhalten hervorrufen.
Hinweis:
Die Übergabe des Schlüssels und von userdata
an funcname
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.
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 oben gezeigte Beispiel erzeugt folgende
Ausgabe:
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 array_walk_recursive(),
create_function(),
list(),
foreach,
each(),
call_user_func_array(), und
array_map(), und
Informationen über den Callback-Typ