A PHP4-ben (nem a PHP3-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.
1 2 foreach(tömb_kifejezés as $ertek) utasítás 3 foreach(tömb_kifejezés as $kulcs => $ertek) utasítás 4 |
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.
Talán már tudod, hogy az alábbiak azonosak:
1 2 3 reset ($tomb); 4 while (list(, $ertek) = each ($tomb)) { 5 echo "Érték: $ertek<br>\n"; 6 } 7 8 foreach ($tomb as $ertek) { 9 echo "Érték: $ertek<br>\n"; 10 } 11 12 |
1 2 3 reset ($tomb); 4 while (list($kulcs, $ertek) = each ($tomb)) { 5 echo "Kulcs: $kulcs, Érték: $ertek<br>\n"; 6 } 7 8 foreach ($tomb as $kulcs => $ertek) { 9 echo "Kulcs: $kulcs, Érték: $ertek<br>\n"; 10 } 11 12 |
Néhány további felhasználási példa:
1 2 /* első foreach példa: csak érték */ 3 4 $tomb = array (1, 2, 3, 17); 5 6 foreach ($tomb as $ertek) { 7 print "Az aktuális értéke \$tomb-nek: $ertek.\n"; 8 } 9 10 /* második foreach példa: érték (a kulcs csak illusztráció) */ 11 12 $tomb = array (1, 2, 3, 17); 13 14 $i = 0; /* csak pedagógiai okokból :) */ 15 16 foreach ($tomb as $ertek) { 17 print "\$tomb[$i] => $ertek.\n"; 18 } 19 20 /* harmadik foreach példa: kulcs és érték */ 21 22 $a = tomb ( 23 "egy" => 1, 24 "kettő" => 2, 25 "három" => 3, 26 "tizenhét" => 17 27 ); 28 29 foreach ($tomb as $kulcs => $ertek) { 30 print "\$tomb[$kulcs] => $ertek.\n"; 31 } 32 |