PHP kézikönyv
Előző |  | Következő

# array_walk

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

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

Előző | Tartalom | Következő
array_walk_recursive | Fel | array