Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

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