array_walk

(PHP 3>= 3.0.3, PHP 4 )

array_walk --  felhasználói függvényt futtat a tömb minden elemén

Leírás

int array_walk ( array array, string func [, mixed userdata])

A func paraméterben megadott nevű felhasználói függvényt alkalmazza az array tömb minden elemére. A func függvény hívásakor első paraméterként a tömbérték, másodikként az indexe kerül átadásra. Ha a userdata is szerepel, akkor ez lesz a harmadik paraméter. A func nevű függvénynek a felhasználó által definiáltnak kell lennie, és nem lehet natív PHP függvény. Emiatt nem lehet az array_walk()-nak például közvetlenül a str2lower()-t meghívni, hanem először létre kell hozni egy saját függvényt, majd ennek átadni a paramétereket.

Megjegyzés: A függvény neve helyett egy tömböt is átadhatsz, ami egy objektum referenciát és egy metódus nevet kell tartalmazzon.

Ha func két vagy három argumentumnál többet igényel a userdata-tól függően, akkor figyelmeztető hibaüzenet (warning) keletkezik minden alkalommal, amikor az array_walk() meghívja a func függvényt. Ezeket a figyelmeztetések elnyomhatók a '@' karaktert az array_walk() elé írva vagy az error_reporting() használatával.

Megjegyzés: Ha a func függvénynek a tényleges tömbértékekkel kell dolgoznia, akkor a func függvény első paraméterét referenciaként kell átadni. Ezután az ezen a változón végzett változtatás az eredeti tömbben is változást idéz elő.

Az array tömb func függvényen belüli módosítása megjósolhatatlan viselkedést eredményezhet.

Megjegyzés: Az index és a userdata értékek átadása a func függvénynek a 4.0 verziótól elérhető.

PHP 4-ben reset() függvényt szükség szerint meg kell hívni, mivel az array_walk() nem inicializálja a tömböt alapértelmezés szerint.

A feldolgozandó tömböt a visszahívott függvényen belül nem lehet megváltoztatni, tehát nem lehet egyik vagy másik elemét, esetleg az egész tömböt törölni. Ha ez mégis megtörténik, akkor ennek a függvénynek a viselkedését nem lehet megjósolni.

Példa 1. array_walk() példa

$gyumolcsok = array ("d"=>"citrom", "a"=>"narancs", "b"=>"banán", "c"=>"alma");

function teszt_atir (&$elem1, $index, $prefix) {
    $elem1 = "$prefix: $elem1";
}

function teszt_kiir ($elem2, $index) {
    echo "$index. $elem2<br>\n";
}
echo "Előtte ...:\n";
array_walk ($gyumolcsok, 'test_kiir');
reset ($gyumolcsok);
array_walk ($gyumolcsok, 'test_atir', 'gyumolcs');
echo "... és utána:\n";
reset ($gyumolcsok);
array_walk ($gyumolcsok, 'test_kiir');

A fenti program kimenete:
Előtte ...:
d. citrom
a. narancs
b. banán
c. alma
... és utána:
d. gyumolcs: citrom
a. gyumolcs: narancs
b. gyumolcs: banán
c. gyumolcs: alma

Lásd még: each() és list()!