while-Schleife
In manchen Fällen ist es notwendig, eine Anweisung so lange auszuführen, bis ein bestimmtes Ergebnis eintritt.
Dies benutzt man z.B. auch um den Inhalt von Datenbanken (z.B. MySQL) oder einfach den Inhalt von Dateien auszugeben. PHP bietet dafür die while-Schleife, die for-Schleife und die foreach-Schleife an.
Inhaltsverzeichnis
Syntax der while-Schleife
Die Syntax einer while-Schleife ist wie folgt aufgebaut:
1 2 3 4 5 |
<?php while(Bedingung) { Anweisungen } ?> |
Ein Beispiel wäre:
<?php $i = 0; while($i < 10) { echo "$i, "; $i++; } ?>
Im obigen Beispiel wird zuerst eine Zählvariable definiert, in diesem Fall die Variable $i und diese wird mit dem Wert 0 initialisiert.
Die Bedingung der while-Schleife ist $i < 10 , d.h. wir überprüfen ob in der Variable ein Wert kleiner 10 steht.
Alles zwischen den geschweiften Klammern sind die Anweisungen der Schleife. Diese werden so oft wiederholt, wie die Bedingung erfüllt ist. Im obigen Beispiel wird die Variable $i ausgegeben und anschließend wird die Zählvariable um den Wert 1 erhöht. Diese Erhöhung des Wertes ist wichtig, damit die Bedingung irgendwann nicht mehr erfüllt ist. Falls Bedingung immer erfüllt ist, beispielsweise weil ihr vergessen habt die Zählvariable $i zu erhöhen, so resultiert euer PHP-Script in eine Endlosschleife und führt zu keinem Ergebnis mehr. Zum Glück bricht aber PHP nach einer gewissen Laufzeit euren Script ab.
Die Bedingung sowie die Anweisungen innerhalb der Schleife könnt ihr übrigens beliebig kompliziert gestalten. So könnt ihr beispielsweise auch mehr als nur eine Zählvariable definieren:
<?php $zaehler1 = 0; $zaehler2 = 0; $min = -20; $max = 30; while($zaehler1 < $max AND $zaehler2 > $min) { echo "Zaehler1: $zaehler1 ; Zaehler2: $zaehler2 <br>"; $zaehler1 += 2; //Verkürzte Schreibweise für $zaehler1 = $zaehler1+2; $zaehler2 -= 3; //Verkürzte Schreibweise für $zaehler2 = $zaehler2-3; } ?>
Im obigen Beispiel sind zwei Variablen definiert $zaehler1 und $zaehler2 . Die eine Variable wird um den Wert 2 erhöht, die andere um den Wert gesenkt. Die while-Schleife läuft solange wie $zaehler1 < $max und $zaehler2 > $min erfüllt sind.
Schleifenabläufe beeinflussen mittels break und continue
In PHP existieren die zwei nützlichen Befehle break und continue .
Mittels break können wir den Schleifenablauf in der Schleife beenden. Dies kann nützlich sein, falls wir beispielsweise etwas suchen. Zum Beispiel suchen wir einen bestimmten Nutzer. Dann könnten wir per while-Schleife alle Benutzer durchlaufen. Falls wir feststellen, den gesuchten Nutzer gefunden zu haben, beenden wir mittels break den Schleifendurchlauf.
Ein etwas einfacheres Beispiel zu break ist das folgende:
<?php $max = 30; $zaehler = 0; $increment = 2; while($zaehler < $max) { if($zaehler == 10) { echo "Bei der Zahl 10 hören wir auf"; break; } echo "$zaehler , "; $zaehler += $increment; //Erhöht den $zaehler um den Wert $increment } ?>
Dieser Code zählt bis maximal 30 und erhöht den $zaehler immer un den Wert $increment, hier also um den Wert 2. Falls die Variable $zaehler aber den Wert 10 annehmen sollte, wird die Schleife beendet.
continue beendet nicht die gesamte Schleife, sondern überspringt den restlichen Schleifenkörper. Folgendes Beispiel veranschaulicht dieses, diesmal mit einer for-Schleife:
<?php $max = 30; $zaehler = 0; $increment = 2; while($zaehler < $max) { $zaehler += $increment; //Erhöht den $zahler um den Wert $increment if($zaehler >= 10 AND $zaehler <= 15) { echo "Eine Zahl zwischen 10 und 15 <br>"; continue; } echo "$zaehler <br>"; } ?>
Diese Schleife startet bei 0 und zählt bis zum Wert von $max. Dabei wird der $zaehler immer um den Wert $increment erhöht, d.h. dieser hat die Werte 0, 2, 4 usw.
Falls $zaehler einen Wert zwischen 10 und 15 hat, wird ein Text ausgegeben und per continue wird die weitere Anweisungen im Schleifenkörper übersprungen. An der Ausgabe sehen wir, dass die Zahlen 10, 12 und 14 nicht ausgegeben werden, sondern wir nur drei mal den Text dort stehen haben, dass wir eine Zahl zwischen 10 und 15 erwischt haben.
do-While-Schleife
Eine kleine Modifikation der while-Schleife ist die do-while-Schleife . Bei dieser wird die Bedingung der Schleife erst nach dem Schleifenkörper überprüft. Das bedeutet, dass der Schleifenkörper auf alle Fälle mindestens einmal durchläuft.
Die Syntax der do-while-Schleife sieht wie folgt aus:
1 2 3 4 5 |
<?php do { Anweisungen } while(Bedingung); ?> |
Angenommen wir wollen eine Zufallszahl generieren die entweder zwischen 0 und 10 liegen soll oder zwischen 20 und 30. Mittels der Funktion rand($min, $max) können wir eine Zahl zwischen $min und $max zufällig erzeugen. Dies würde als while-Schleife wie folgt aussehen:
<?php $zufall = rand(0, 30); while($zufall > 10 AND $zufall < 20) { $zufall = rand(0, 30); } echo "Unsere Zufallszahl: $zufall"; ?>
Mittels do-while-Schleife sparen wir uns die Initialisierung von $zufall, denn der Schleifenkörper wird ja ausgeführt bevor die Bedingung überprüft wird. Das obige Beispiel würde dann wie folgt aussehen:
<?php do { $zufall = rand(0, 30); } while($zufall > 10 AND $zufall < 20); echo "Unsere Zufallszahl: $zufall"; ?>
Zugegeben, als Programmieranfänger wirkt die do-while-Schleife etwas verwirrend. Wenn du den Sinn und Zweck noch nicht ganz verstanden hast, dann ist dies kein Problem. do-while-Schleifen werden in der Praxis eher selten eingesetzt.
Autor: Nils Reimers