A PHP 4-ben (nem a PHP 3-ban!) a perlhez és más nyelvekhez hasonlóan rendelkezésre áll egy foreach szerkezet is. Ez egy jól használható eszközt ad a tömbökön végzett iterációkhoz. Két szintaxis létezik, a második egy apró, de hasznos plusz szolgáltatást nyújt az elsőhöz képest.
Az első forma végigmegy a tömb_kifejezés által adott tömbön. Minden alkalommal az aktuális elem értéke a $ertek változóba kerül, és a belső tömb mutató növelésre kerül. (Tehát a következő alkalommal a soron következő elemet fogod megkapni).
A második forma ugyanezt végzi el, de az aktuális elem kulcsa a $key változóba kerül.
Megjegyzés: Amikor a foreach indul, a belső tömb mutató az első elemre áll. Ez azt jelenti, hogy nem kell meghívnod a reset() függvényt egy foreach ciklus előtt.
Megjegyzés: Szintén fontos megjegyezni, hogy a foreach függvény a megadott tömb egy másolatával dolgozik, nem magával a tömbbel, ezért az each()-el ellentétben az eredeti tömb mutatója nem változik meg, és a tömbön végzett módosítások sem kerülnek be az eredeti tömbbe.
Megjegyzés: A foreach nem támogatja a @ hiba-elnyelő operátor használatát!
Talán már tudod, hogy az alábbiak azonosak:
reset ($tomb); while (list(, $ertek) = each ($tomb)) { echo "Érték: $ertek<br>\n"; } foreach ($tomb as $ertek) { echo "Érték: $ertek<br>\n"; } |
reset ($tomb); while (list($kulcs, $ertek) = each ($tomb)) { echo "Kulcs: $kulcs, Érték: $ertek<br>\n"; } foreach ($tomb as $kulcs => $ertek) { echo "Kulcs: $kulcs, Érték: $ertek<br>\n"; } |
Néhány további felhasználási példa:
/* első foreach példa: csak érték */ $tomb = array (1, 2, 3, 17); foreach ($tomb as $ertek) { print "Az aktuális értéke \$tomb-nek: $ertek.\n"; } /* második foreach példa: érték (a kulcs csak illusztráció) */ $tomb = array (1, 2, 3, 17); $i = 0; /* csak pedagógiai okokból :) */ foreach ($tomb as $ertek) { print "\$tomb[$i] => $ertek.\n"; } /* harmadik foreach példa: kulcs és érték */ $a = array ( "egy" => 1, "kettő" => 2, "három" => 3, "tizenhét" => 17 ); foreach ($tomb as $kulcs => $ertek) { print "\$tomb[$kulcs] => $ertek.\n"; } /* negyedik foreach példa: többdimenziós tömb */ $tomb[0][0] = "a"; $tomb[0][1] = "b"; $tomb[1][0] = "y"; $tomb[1][1] = "z"; foreach ($tomb as $belsotomb) { foreach ($belsotomb as $ertek) { print "$ertek\n"; } } /* ötödik foreach példa: dinamikus tömbök */ foreach(array(1, 2, 3, 4, 5) as $ertek) { print "$ertek\n"; } |