foreach

A PHP 4-ben (nem a PHP 3-ban!) a Perlhez és más nyelvekhez hasonlóan létezik az ún. foreach szerkezet is. Ez jól használható eszközt ad a tömbökön végzett iterációkhoz. Két szintaxisa létezik, a második egy apró, de hasznos kiegészítéssel nyújt többet az elsőhöz képest.

foreach(tömb_kifejezés as $ertek) utasítás
foreach(tömb_kifejezés as $kulcs => $ertek) utasítás

Az első forma végigmegy a tömb_kifejezés szolgáltatta 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. (A következő alkalommal tehát a soron következő elemet fogja venni).

A második forma ugyanezt végzi el, de az aktuális elem kulcsa a $kulcs 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ívni 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ábbi példák egyenértékűek:

reset ($tomb);
while (list(, $ertek) = each ($tomb)) {
    echo "Érték: $ertek<br>\n";
}

foreach ($tomb as $ertek) {
    echo "Érték: $ertek<br>\n";
}

Az alábbiak is azonos eredményt szolgáltatnak:

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";
    $i++;
}

/* 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";
}