PHP Handbuch
Zurück | Kapitel 16. Kontroll-Strukturen | Weiter

# `for`

Die `for`-Schleifen sind die komplexesten Schleifen in PHP. Sie funktionieren wie ihr Gegenstück in C. Die Syntax einer `for`-Schleife sieht wie folgt 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 mit der Ausführung der nachfolgenden Anweisung(en) fort. 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 gar nicht so sinnlos, wie Sie vielleicht zunächst 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:

`<?php /* Beispiel 1 */ for ($i = 1; $i <= 10; $i++) { echo $i; } /* Beispiel 2 */ for ($i = 1; ; $i++) { if ($i > 10) { break; } echo $i; } /* Beispiel 3 */ $i = 1; for (; ; ) { if ($i > 10) { break; } echo $i; $i++; } /* Beispiel 4 */ for ($i = 1; $i <= 10; echo $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 Hashs oder Arrays eine `foreach`-Anweisung. PHP 3 hat dies nicht; im Gegensatz zu PHP 4 (vgl. foreach). In PHP 3 können Sie für diesen Zweck while mit der list()- und each()-Funktion kombinieren. Beispiele finden Sie in der Dokumentation zu diesen Funktionen.

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