Forum und email

foreach

PHP 4 (maar PHP 3 niet) heeft een foreach construct, dat veel op die van PERL en sommige andere talen lijkt. Dit construct geeft een makkelijke manier om door een array te lopen. Er zijn twee syntaxes, de tweede is een kleine, maar handige, uitbreiding op de eerste:

foreach(array_expressie as $waarde) statement
foreach(array_expressie as $key => $waarde) statement
     

De eerste vorm loopt door de array, aangegeven met array_expressie. In elke iteratie wordt de waarde van het huidige element in $waarde geplaatst en wordt de interne array pointer één positie verder gezet (zodat in de volgende iteratie het volgende element wordt opgehaald).

De tweede vorm werkt precies zo, alleen zal de key van het element ook nog eens aan de variabele $key gekoppeld.

Note: Als foreach begint met het doorlopen van de array, dan wordt de interne array pointer automatisch gereset naar het eerste element van de array. Dit betekend dat je niet eerst reset() hoeft te gebruiken voor een foreach loop.

Note: Also note that foreach operates on a copy of the specified array, not the array itself, therefore the array pointer is not modified as with the each() construct and changes to the array element returned are not reflected in the original array.

Note: foreach does not support the ability to suppress error messages using '@'.

De volgende twee voorbeelden zijn functioneel identiek aan elkaar:

reset ($arr);
while (list(, $value) = each ($arr)) {
    echo "Waarde: $value<br>\n";
}

foreach ($arr as $value) {
    echo "Waarde: $value<br>\n";
}
De volgende zijn ook functioneel aan elkaar:
reset ($arr);
while (list($key, $value) = each ($arr)) {
    echo "Key: $key; Waarde: $value<br>\n";
}

foreach ($arr as $key => $value) {
    echo "Key: $key; Waarde: $value<br>\n";
}

Hier volgen nog wat meer voorbeelden van het gebruik van deze functie:

/* foreach voorbeeld 1: alleen de waarde */

$a = array (1, 2, 3, 17);

foreach ($a as $v) {
   print "Huidige waarde van \$a: $v.\n";
}

/* foreach voorbeeld 2: waarde (samen met de key ter illustratie) */

$a = array (1, 2, 3, 17);

$i = 0; /* alleen ter illustratie */

foreach($a as $v) {
    print "\$a[$i] => $k.\n";
}

/* foreach voorbeeld 3: key en waarde */

$a = array (
    "een" => 1,
    "twee" => 2,
    "drie" => 3,
    "zeventien" => 17
);

foreach($a as $k => $v) {
    print "\$a[$k] => $v.\n";
}