for

PHP Handbuch
Zurück | Kapitel 12. Kontroll-Strukturen | Nach vorne

# `for`

`For`-Schleifen sind die komplexesten Schleifen in PHP. Sie funktionieren wie ihr Gegenstück in C. Die Syntax einer `for`-Schleife sieht so aus:

    for (ausdr1; ausdr2; ausdr3) Anweisung

Der erste Ausdruck (`ausdr1`) wird beim Schleifenbeginn (ohne jegliche Vorbedingung) geprüft bzw. ausgeführt.

Zu Beginn jedes Durchlaufs wird nun `ausdr2` geprüft. Wenn dieser `TRUE` ist, fährt die Schleife fort mit der Ausführung der nachfolgenden Anweisung. Ist das Ergebnis `FALSE`, wird die Schleife beendet.

Am Ende jedes Durchlaufs wird `ausdr3` geprüft (ausgeführt).

Jeder Ausdruck kann leer sein. Ist `ausdr2` leer, wird die Schleife endlos oft durchlaufen (PHP wertet diesen, wie in C, implizit als `TRUE`). Das ist nicht so sinnlos, wie Sie vielleicht glauben, weil man häufig eine Schleife erst durch eine bedingte `break` -Anweisung statt durch eine unwahr werdende `for`-Bedingung beenden möchte.

Beachten Sie die folgenden Beispiele. Alle geben Zahlen von 1 bis 10 aus:

    /* Beispiel 1 */

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

    /* Beispiel 2 */

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

    /* Beispiel 3 */

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

    /* Beispiel 4 */

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

Selbstverständlich sieht das erste (oder vielleicht das vierte) Beispiel am besten aus, aber Sie werden noch feststellen, dass es oftmals ganz nützlich sein kann, leere Parameter in `for`-Schleifen zu verwenden.

PHP unterstützt auch bei `for`-Schleifen die alternative "Doppelpunkt-Syntax".

    for (ausdr1; ausdr2; ausdr3): Anweisung; ...; endfor;

Andere Sprachen haben für das Durchlaufen eines Hash´s oder Arrays eine `foreach`-Anweisung. PHP 3 hat dies nicht; im Gegensatz zu PHP 4 (vgl. foreach). In PHP 3 kann man dafür eine Kombination von while mit der list()- und each()-Funktion einsetzen. Beispiele finden Sie in der Dokumentation zu diesen Funktionen.

Zurück | Zum Anfang | Nach vorne
`do..while` | Nach oben | `foreach`