PHP kézikönyv Előző Következő 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ő Fel