Die While-Schleife prüft die Bedingung vor dem Schleifendurchlauf. Während des Schleifendurchlaufs können die Variablen in der Bedingung geändert werden, so dass ein Abbruch möglich ist. Auch der Fall, dass die Bedingung schon zu Beginn nicht erfüllt ist und die Schleife daraufhin niemals durchlaufen wird, ist möglich.
Folgendes Listing zeigt die While-Schleife:
1 2 3 4 5 6 |
<?php while (Bedingung) { Anweisung(); } ?> |
Die For-Schleife stellt, wenn man es genau nimmt, eine spezialisierte Variante der While-Schleife da. Oben gezeigte For-Schleife mit der Variablen $i
ließe sich als While-Schleife wie folgt formulieren:
1 2 3 4 5 6 7 8 |
<?php $i = 0; while ($i<100) { Anweisung(); $i++; } ?> |
Es ist wichtig, die Abbruchbedingung der While-Schleife sorgfältig zu wählen. Es kann nämlich passieren, dass diese Abbruchbedingung niemals false
ergibt. Somit hat man eine Endlosschleife erzeugt. Sobald das Programm gestartet wird, stürzt es durch diese Endlosschleife ab, da es diese niemals verlassen kann und dementsprechend nicht terminiert und keine Benutzerausgabe erzeugt oder eine endlose Benutzerausgabe besitzt. Dies ist beispielsweise im folgenden Programm der Fall, bei welchem die Variable $i
bei 3
startet, aber unglücklichweise die Abbruchbedingung sagt, dass die Schleife abbricht, wenn sie 0
oder kleiner 0
ist:
1 2 3 4 5 6 7 8 9 |
<?php $i = 3; while ($i > 0) { Anweisung(); $i++; } echo ("Diese Anweisung wird leider nie erreicht."); ?> |
Glücklicherweise ist ein solcher Fehler kein Problem, wenn das Skript auf einem Server, auf dem viele unterschiedliche Programme laufen, zur Ausführung kommt. Normalerweise könnte es sein, dass der Server nach und nach vollständig blockiert wird und nur noch mit der Bearbeitung der Endlosschleifen beschäftigt ist. PHP jedoch verfügt über ein Sicherheitsfeature, welches Skripte nach einer gewissen Zeit automatisch terminiert. Dies kann manchmal ärgerlich sein, wenn Skripte gerade lange laufen sollen, da sie komplexe Aufgaben erledigen sollen, schützt jedoch auf der anderen Seite alle Nutzer des Rechners davor, dass massive Serverprobleme auftreten.