PHP: Schleifen
Schleifen ähneln in ihrer Syntax den Bedingungen. Sie können im Prinzip als wiederholte Bedingungen betrachtet werden. Es gibt drei Arten von Schleifen.
Bei Schleifen ist immer darauf zu achten, dass diese auf jeden Fall irgendwann durch eine nicht erfüllte Bedingung beendet werden, da es ansonsten zu einer Endlos-Schleife kommt, die die Serverleistung stark belasten kann! Abgesehen davon verhindert eine Endlos-Schleife die Fortsetzung eines Skriptes.
Prüfung der Bedingung am Anfang: while ()
Die Grundform einer Schleife wird mit while () gebildet. Die Befehle innerhalb der geschweiften Klammer werden solange wiederholt ausgeführt, wie die Bedingung von while () den Wert TRUE hat.
<?php
$i = 0;
while ($i < 10) {
echo $i."<br>";
$i++;
}
echo "Ende der Schleife.";
?>
Prüfung der Bedingung am Ende: do … while ()
Wird die Schleife mit do … while () formuliert, wird die Schleife mindestens ein Mal durchlaufen und die Bedingung für die Fortsetzung der Schleife erst am Ende geprüft.
Der Unterschied zu der ersten Schleifenart wird deutlich, wenn man in diesen Beispielen für $i den Wert 10 einsetzt,
<?php
$i = 0;
do {
echo $i."<br>";
$i++;
} while ($i < 10);
echo "Ende der Schleife.";
?>
Schleifen mit for ()
Schleifen, bei denen die Anzahl der Durchläufe von einer veränderlichen Variablen abhängig ist, werden mit for () beschrieben. In der Klammer werden drei durch Semikolon ; getrennte Attribute notiert:
1. Ausgangswert der Variable (hier: $i=0)
2. Bedingung, unter der die Schleife fortgesetzt wird (hier: $i < 10)
3. Funktion, die auf die Variable angewendet wird (hier: $i++)
<?php
for ($i = 0; $i < 10; $i++) {
echo $i."<br>";
}
echo "Ende der Schleife.";
?>
Es können auch Funktionen auf mehrere Variablen angewendet werden
<?php
for ($i = $n = 1; $i < 10; $i++, $n += 2) {
echo "\$i = $i ; \$n = $n<br>";
}
?>
Schleifen unterbrechen
Mit continue können Schleifen aller drei Arten unterbrochen werden. Unterbrechung bedeutet in diesem Zusammenhang, dass die folgenden Befehle nicht mehr ausgeführt werden und der nächste Schleifendurchlauf begonnen wird.
<?php
$i = -10;
while ($i < 10) {
$i++;
if ($i/3 == floor($i/3)) continue;
echo $i."<br>";
}
echo "Ende der Schleife.";
?>