PHP Handbuch
Zurück |  | Weiter

# array_walk

(PHP 3>= 3.0.3, PHP 4 , PHP 5)

array_walk -- Wendet eine Benutzerfunktion an jedem Element eines Arrays an

## Beschreibung

int 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().

Zurück | Zum Anfang | Weiter
array_walk_recursive | Nach oben | array