Um Aufgaben auszuführen, die sich öfter wiederholen, benutzt man einen sogenannten Loop. Die einfachste Form eines Loops ist der While Loop. Der While Loop besteht aus dem Keyword while, dem die Bedingung in Klammern folgt und der auszuführende Code in geschweiften Klammern.
while (condition) { // auszuführender Code }
Solange die Bedingung wahr (true) bleibt, wird der Code in den geschweiften Klammern ausgeführt. Der Loop wird beendet, sobald die Bedingung nicht mehr wahr ist (false).
Einfaches Beispiel für einen While Loop:
<?php // Zähler $i = 1; while ($i <= 10) { echo $i; . ', '; // Erhöhung des Zählers $i++; }
Das Ergebnis ist in diesem Fall die Ausgabe von: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Sobald der Zähler den Wert 11 hat, wird der Loop nicht mehr ausgeführt, da die Bedingung $i >= 10 nicht mehr wahr ist.
$i ist eine der seltenen Gelegenheiten, bei denen eine Variable nur aus einem Zeichen besteht. Die Bezeichnung $i hat sich als Variable für einen Zähler als allgemeiner Standard durchgesetzt. Benötigt man mehr als einen Zähler, werden weitere Zähler gewöhnlich als $j bzw. $k bezeichnet.
Do … While Loop
Sehr häufig findet man auch einen Do … While Loop. In einem Do … While Loop kommt die Bedingung nach dem Block mit dem Code, der ausgeführt werden soll. Der Do … While Loop beginnt mit dem Keyword do. Danach folgt in geschweiften Klammern der Code, der ausgeführt werden soll, anschließend die Bedingung in runden Klammern. Am Ende steht ein Semikolon.
do { // Code, der ausgeführt werden soll } while (condition) ;
Dadurch, dass die Bedingung ganz am Ende steht, wird der Do … While Loop immer mindestens einmal ausgeführt, auch wenn die Bedingung falsch (false) ist.
Beispiel:
<?php $i = 50; do { echo $i ; $i++; } while ($1 <= 10);
Als Ergebnis würde $i einmal ausgegeben (50). Weiter passiert nichts, da die nachfolgende Bedingung falsch ist.
Bei einem While und auch bei einem Do … While Loop besteht das Risiko, dass man eine Bedingung setzt, die immer wahr ist und in einem niemals endenden Loop endet (z.B. wenn man vergisst, den Zähler zu erhöhen).
For Loop
Bei einem For Loop ist das Risiko, eine unendlichen Loop zu erhalten, geringer. Die Basis-Syntax sieht wie folgt aus:
for (initialize; condition; increment; ) { // Code, der ausgeführt werden soll }
Der Loop wird durch 3 Ausdrücke kontrolliert, die in Klammern gesetzt dem Keyword for folgen. Der erste Ausdruck wird ausgeführt, bevor der Loop startet. Normalerweise wird dies zum Initialisieren eines Zählers benutzt. Der zweite Ausdruck legt die Bedingung fest, die bestimmt, wie lange der Loop laufen soll. Der dritte Ausdruck wird nach jeder Wiederholung des Loops ausgeführt. Normalerweise wird dies benutzt, um den Zähler zu erhöhen.
<!DOCTYPE html> <html> <head> <title></title> </head> <body> <h1>Zutaten</h1> <ul> <?php $zutaten = array('Mehl', 'Milch', 'Zucker', 'Eier', 'Salz'); for ($i = 0; $i < count($zutaten); $i++) { echo '<li>' . $zutaten[$i] . '</li>'; } ?> </ul> </body> </html>
Das Ergebnis im Browser ist:
Zutaten
- Mehl
- Milch
- Zucker
- Eier
- Salz
Es kann vorkommen, dass man bei einem bestimmten Element des Arrays den Code nicht ausführen will. In diesem Fall kann man ein if-Statement mit dem Befehl continue einfügen:
<?php $zutaten = array('Mehl', 'Milch', 'Zucker', 'Eier', 'Salz'); for ($i = 0; $i < count($zutaten); $i++) { if ($i == 2) { continue; } echo '<li>' . $zutaten[$i] . '</li>'; } ?>
In diesem Fall wird das dritte Element (Zucker) bei der Auflistung ausgelassen (da ein Array mit der Zahl 0 beginnt, entspricht ein Index mit der Zahl 2 dem dritten Element des Arrays).
Wenn der Loop nach einem bestimmten Element stoppen soll, benutzt man den break Befehl.
<?php $zutaten = array('Mehl', 'Milch', 'Zucker', 'Eier', 'Salz'); for ($i = 0; $i < count($zutaten); $i++) { echo '<li>' . $zutaten[$i] . '</li>'; if ($zutaten[$i] == 'Zucker') { break; }
In diesem Fall wird der Loop, sobald das Element Zucker ausgegeben ist, gestoppt. Die Liste endet also mit dem Element Zucker.
Zutaten
- Mehl
- Milch
- Zucker
Von allen Loops ist der For Loop sicherlich der nützlichste. Der Do … While Loop ist eher speziell, da er immer einmal ausgeführt wird, auch wenn die Bedingung falsch ist. Der While Loop ist zwar sehr einfach, beinhaltet allerdings das Risiko einen unendlichen Loop zu schaffen, wenn man nicht aufpasst und niemals der Fall eintritt, dass die Bedingung falsch (false) ist.