array_walk

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

Beschreibung

int array_walk ( array array, callback function [, mixed userdata])

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