Podręcznik PHP
Poprzedni |  | Następny

# array_walk

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

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

Poprzedni | Spis treści | Następny
array_walk_recursive | Początek rozdziału | array