array_walk
(PHP 4, PHP 5)
array_walk — felhasználói függvényt futtat a tömb minden elemén
LeÃrás
Siker esetén TRUE értékkel tér vissza, ellenkező esetben FALSE értéket ad.
A funcname paraméterben megadott nevű felhasználói függvényt alkalmazza az array tömb minden elemére. A funcname 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 funcname 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.
Ha funcname 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 funcname függvényt. Ezeket a figyelmeztetések elnyomhatók a '@' karaktert az array_walk() elé Ãrva vagy az error_reporting() használatával.
Note: Ha a funcname függvénynek a tényleges tömbértékekkel kell dolgoznia, akkor a funcname 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 funcname függvényen belüli módosÃtása megjósolhatatlan viselkedést eredményezhet.
Note: Az index és a userdata értékek átadása a funcname függvénynek a 4.0.0 verziótól elérhető.
Az array_walk() függvényre nem hat az array paraméterben megadott tömb pointere. Az array_walk() függvény az egész tömbön kereszetül végigmegy a pointer pozÃcióját figyelmen kÃvül hagyva.
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 a tömb, amit az array_walk() függvény használ megváltozik, akkor függvénynek a viselkedését nem lehet megjósolni.
Example#1 array_walk() példa
<?php
$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');
array_walk ($gyumolcsok, 'test_atir', 'gyumolcs');
echo "... és utána:\n";
array_walk ($gyumolcsok, 'test_kiir');
?>
A fenti példa a következő kimenetet adja:
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: array_walk_recursive(), create_function(), list(), foreach, each(), call_user_func_array() és array_map() és a visszahÃvható (callback) tÃpusról szóló bejegyzést.