Opis
int
array_walk
( array tbl, string funk [, mixed dane])
Wykonuje
zdefuniowaną
przez
użytkownika
funkcję
o
nazwie
funk
na
każdym
elemencie
tablicy
tbl
.
Wartość
elementu
będzie
przekazana
do
funk
jako
pierwszy
parametr
,
a
klucz
jako
drugi
.
Jeśli
podany
zostanie
parametr
dane
,
to
będzie
on
przekazany
do
funkcji
jako
trzeci
parametr
.
funk
musi
być
funkcją
zdefiniowaną
przez
użytkownika
,
a
nie
natywną
funkcją
PHP
.
W
związku
z
tym
nie
możesz
bezpośrednio
użyć
array_walk(
)
z
str2lower(
)
.
Musisz
najpierw
napisać
funkcję
zawierającą
str2lower(
)
i
przekazać
tą
funkcję
jako
parametr
.
Notatka
:
Zamiast
nazwy
funkcji
może
zostać
przekazana
tablica
zawierająca
referencję
do
obiektu
i
nazwę
metody
Jeśli
funk
wymaga
więcej
niż
dwóch
lub
trzech
parametrów
,
zależnie
od
parametru
dane
,
wygenerowane
będzie
ostrzeżenie
za
każdym
razem
,
kiedy
array_walk(
)
będzie
wywoływała
funk
.
Ostrzeżenia
te
mogą
być
ukryte
przez
dodanie
znaku
'
@
'
przed
wywołaniem
array_walk(
)
lub
używając
error_reporting(
)
.
Notatka
:
Jeśli
funk
ma
zmieniać
wartości
tablicy
,
określ
pierwszy
parametr
funk
Jeśli
funk
ma
zmieniać
wartości
tablicy
,
określ
pierwszy
parametr
funk
jako
referencję
.
W
tym
przypadku
wszystkie
zmiany
dokonane
przez
tą
funkcję
będą
dokonywane
bezpośrednio
na
tablicy
.
Modyfikacja
tablicy
z
wnętrza
funk
może
powodować
nieprzewidziane
błędy
.
Notatka
:
Przekazywanie
klucza
i
danych
użytkownika
do
funk
zostało
dodane
w
PHP
4.0
W
PHP
4
konieczne
jest
wywołanie
reset(
)
ponieważ
array_walk(
)
nie
resetuje
tablicy
domyślnie
.
Użytkownicy
nie
mogą
zmieniać
samej
tablicy
z
wnętrza
funkcji
zwrotnej
,
to
jest
dodawać
/
usuwać
elementy
,
usuwać
tablicę
na
której
jest
wywoływana
funkcja
array_walk(
)
.
Jeśli
ta
tablica
zostanie
zmieniona
,
funkcja
może
się
zachowywać
w
sposób
nieokreślony
.
Przykład
1
.
Przykład
użycia
array_walk(
)
$owoce
=
array
(
"d"=
"cytryna"
,
"a"=
"pomarańcza"
,
"b"=
"banan"
,
"c"=
"jabłko")
;
function
test_zmiana
(
$element1
,
$klucz
,
$prefiks
)
{
$element1
=
"$prefiks
:
$element1"
;
}
function
test_wyswietlanie
($element2
,
$klucz
)
{
echo
"$klucz
.
$element2
br
\n"
;
}
echo
"Przed
...:\n"
;
array_walk
($owoce
,
'test_wyswietlanie')
;
reset
($owoce)
;
array_walk
($owoce
,
'test_zmiana'
,
'owoc')
;
echo
"..
.
i
po:\n"
;
reset
($owoce)
;
array_walk
($owoce
,
'test_wyswietlanie')
;
|
Powyższy
przykład
wyświetli
:
Przed
...
:
d
.
cytryna
a
.
pomarańcza
b
.
banan
c
.
jabłko
..
.
i
po
:
d
.
owoc
:
cytryna
a
.
owoc
:
pomarańcza
b
.
owoc
:
banan
c
.
owoc
:
jabłko
|
|
Patrz
także
:
each(
)
i
list(
)
.