Forum und email

for

for loops zijn de meest complexe loops in PHP. Ze gedragen zich net als de for-loops in C. De syntax van een for loop is:

for (expr1; expr2; expr3) statement
     

De eerste expressie (expr1) wordt exact één keer uitgevoerd aan het begin van de loop.

Aan het begin van elke iteratie wordt expr2 geëvalueerd. Als deze evalueert tot TRUE, dan gaat de loop verder en worden de geneste statements uitgevoerd. De execute van de loop stopt als de expressie evalueert tot FALSE.

Aan het einde van elke iteratie wordt expr3 uitgevoerd.

Elk van de drie expressies mag leeg zijn. Als expr2 leeg is dan betekend dat dat de loop oneindig zal lopen (PHP neemt aan dat als de tweede expressie leeg is, de expressie de waarde TRUE heeft, net als in C). Dit is niet zo nutteloos als je zult denken, het is immers mogelijk dat de loop wordt onderbroken met een conditioneel break statement in plaats van het gebruik van een waarheidsexpressie.

Neem de volgende voorbeelden. Elk van deze zal de nummers 1 tot 10 afdrukken:

/* voorbeeld 1 */

for ($i = 1; $i <= 10; $i++) {
    print $i;
}

/* voorbeeld 2 */

for ($i = 1;;$i++) {
    if ($i > 10) {
        break;
    }
    print $i;
}

/* voorbeeld 3 */

$i = 1;
for (;;) {
    if ($i > 10) {
        break;
    }
    print $i;
    $i++;
}

/* voorbeeld 4 */

for ($i = 1; $i <= 10; print $i, $i++) ;

Natuurlijk lijkt het eerste voorbeeld het netste (of misschien het vierde), maar je zult zien dat het leeglaten van expressie in de for loops toch vaak handig kan zijn.

PHP heeft ook een "dubbele punt syntax" voor for loops.

for (expr1; expr2; expr3): statement; ...; endfor;
     

Andere talen hebben een foreach statement voor het doorlopen van een array of hash. PHP 3 heeft niet zo'n constructie; PHP 4 heeft deze wel (zie foreach). In PHP 3 kun je hetzelfde resultaat bereiken door een while met een list() en een each() functie te combineren. Zie de documentatie bij deze functies voor een voorbeeld.