Forum und email

array_walk

(PHP 4, PHP 5)

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

Leírás

bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )

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.