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