array_walk

array_walk -- Zastosuj funkcję użytkownika do każdego elementu tablicy

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