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