PHP Handbuch
Zurück |  | Nach vorne

# array_walk

(PHP 3>= 3.0.3, PHP 4 )

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

## Beschreibung

int array_walk ( array array, string func [, mixed userdata])

Wendet die mittels `func` angegebene Benutzerfunktion für jedes Element von `array` an. `func` 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 `func` übergeben.

`func` muss eine vom Benutzer definierte Funktion sein, und nicht eine native PHP Funktion wie z.B. strtolower() oder stripslashes(). Die vom Benutzer definierte Funktion kann native PHP Funktionen verwenden.

> Anmerkung: Anstelle eines Funktionsnamens kann auch ein Array mit einer Objekt-Referenz und dem Namen einer Methode angegeben werden.

Sollte `func` mehr als die ihr übergebenen Parameter benötigen, wird bei jedem Aufruf von `func` 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 `func` direkt mit den Werten des Arrays arbeiten soll, spezifizieren Sie den ersten Parameter von `func` als Referenz. Dann werden alle Änderungen an diesen Elementen direkt in dem originalen Array durchgeführt.

> Die Modifizierung des Arrays aus `func` heraus könnte ein unvorhersehbares Verhalten hervorrufen.

> Anmerkung: Die Übergabe des Schlüssels und von `userdata` an `func` 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 | Nach vorne
array_values | Nach oben | array