PHP-Schleifen mit der "for"-Anweisung
Lerne die PHP "for"-Schleife: Initialisierung, Bedingung und Inkrement – plus Hoch-/Runterzählen, eigene Schrittweiten, Array-Iteration, verschachtelte Schleifen, break und continue.
In PHP ist die for-Anweisung eine Kontrollstruktur, die einen Codeblock eine bekannte Anzahl von Malen ausführt. Du greifst darauf zurück, wenn die Anzahl der Iterationen fest und vorhersehbar ist — etwa zum Ausgeben der Zahlen von 1 bis 10, zum Erstellen einer HTML-Tabelle mit N Zeilen oder zum Durchlaufen eines indizierten Arrays nach Position.
Dieses Kapitel behandelt die drei Teile einer for-Schleife, wie jeder davon ausgeführt wird, sowie praktische Muster: Hoch- und Runterzählen, benutzerdefinierte Schrittweiten, Array-Iteration, verschachtelte Schleifen und die Schlüsselwörter break / continue.
Syntax
Eine for-Schleife besteht aus drei Ausdrücken in den Klammern, die durch Semikolons getrennt sind, gefolgt vom Schleifenkörper in geschweiften Klammern:
for (initialization; condition; increment) {
// code to be executed on each pass
}Die drei Ausdrücke werden in einer bestimmten Reihenfolge ausgeführt:
- Initialisierung wird einmalig ausgeführt, bevor die Schleife beginnt — normalerweise wird dabei ein Zähler gesetzt.
- Bedingung wird vor jeder Iteration geprüft. Solange sie
trueist, wird der Körper ausgeführt; wenn siefalsewird, stoppt die Schleife. - Inkrement wird nach jeder Iteration ausgeführt, kurz bevor die Bedingung erneut geprüft wird — normalerweise rückt es den Zähler vor.
Initialisierung
Die Initialisierung legt den Startwert des Zählers fest. Sie wird genau einmal ganz am Anfang ausgeführt. Um beim Zählen bei 1 zu beginnen:
$counter = 1;Bedingung
Die Bedingung entscheidet, wann gestoppt wird. Die Schleife läuft weiter, solange die Bedingung wahr ist. Um zu schleifen, während der Zähler 10 oder weniger ist:
$counter <= 10;Wenn die Bedingung beim ersten Prüfen false ist, wird der Körper überhaupt nicht ausgeführt.
Inkrement
Das Inkrement ändert den Zähler nach jedem Durchlauf, damit die Schleife schließlich endet. Um bei jedem Durchlauf 1 zu addieren:
$counter++;Wenn das Inkrement die Bedingung niemals
falsewerden lässt, entsteht eine Endlosschleife. Stelle sicher, dass der Zähler sich in Richtung der Abbruchbedingung bewegt.
Ein vollständiges Zählbeispiel
Wenn man die drei Teile zusammensetzt, gibt diese Schleife den Wert von $counter bei jedem Durchlauf aus, von 1 bis 10:
Der obige Code gibt aus:
1 2 3 4 5 6 7 8 9 10 (Ohne . " " würde echo die Ziffern ohne Lücken ausgeben — 12345678910 — da echo zwischen Werten nichts einfügt.)
Runterzählen und benutzerdefinierte Schrittweiten
Das Inkrement ist nur ein Ausdruck, er kann also dekrementieren oder in anderen Schritten als 1 voranschreiten. Um rückwärts von 10 bis 1 zu zählen, beginne hoch, stoppe bei 1 und verwende $i--:
<?php
for ($i = 10; $i >= 1; $i--) {
echo $i . " ";
}
?>Um in 2er-Schritten zu zählen (gerade Zahlen bis 10 ausgeben), verwende $i += 2:
<?php
for ($i = 2; $i <= 10; $i += 2) {
echo $i . " "; // 2 4 6 8 10
}
?>Durch ein Array iterieren
Eine for-Schleife kann ein indiziertes Array nach Position durchlaufen. Die Bedingung verwendet count(), um die Anzahl der Elemente zu ermitteln, und $i wird als Array-Index verwendet:
Der obige Code gibt aus:
apple
banana
cherryBeachte, dass die Schleife bei 0 beginnt (PHP-Arrays sind nullindiziert) und die Bedingung $i < count($fruits) lautet — mit < statt <=, da der letzte gültige Index count - 1 ist.
Für Arrays — insbesondere assoziative Arrays, bei denen die Schlüssel keine aufeinanderfolgenden ganzen Zahlen sind — ist die foreach-Schleife in der Regel klarer und sicherer als eine for-Schleife, da man keinen Index manuell verwalten muss.
Verschachtelte Schleifen
Du kannst eine for-Schleife in eine andere einbetten. Die innere Schleife wird bei jedem einzelnen Durchlauf der äußeren Schleife vollständig ausgeführt. Dies ist üblich für Raster, Tabellen und multiplikationsähnliche Ausgaben:
<?php
for ($row = 1; $row <= 3; $row++) {
for ($col = 1; $col <= 3; $col++) {
echo $row * $col . "\t";
}
echo "\n";
}
?>Dies gibt ein 3×3-Multiplikationsraster aus:
1 2 3
2 4 6
3 6 9 Abbrechen und Iterationen überspringen
Zwei Schlüsselwörter geben dir feinere Kontrolle innerhalb des Schleifenkörpers:
breakbeendet die Schleife sofort und setzt mit dem Code danach fort.continueüberspringt den Rest der aktuellen Iteration und springt zur nächsten (das Inkrement wird trotzdem ausgeführt).
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i == 4) {
continue; // skip 4
}
if ($i == 7) {
break; // stop entirely at 7
}
echo $i . " ";
}
?>Der obige Code gibt aus:
1 2 3 5 6 4 wird durch continue übersprungen, und die Schleife stoppt vor der Ausgabe von 7 wegen break. Erfahre mehr im Kapitel break und continue.
Wann for vs. andere Schleifen verwenden
- Verwende
for, wenn du die Anzahl der Iterationen im Voraus kennst oder einen Zähler / Index benötigst. - Verwende
foreach, um über die Elemente eines Arrays oder Objekts zu iterieren, ohne einen Index zu verwalten. - Verwende
while, wenn du schleifst, bis sich eine Bedingung ändert, und es keinen natürlichen Zähler gibt. - Verwende
do...while, wenn der Körper mindestens einmal ausgeführt werden muss, bevor die Bedingung geprüft wird.
Fazit
Die for-Schleife ist eine wesentliche Kontrollstruktur in PHP, um Code eine bekannte Anzahl von Malen zu wiederholen. Beherrsche ihre drei Teile — Initialisierung, Bedingung und Inkrement — und du kannst hoch- oder runterzählen, in beliebigen Schritten vorgehen, Arrays nach Index durchlaufen und Schleifen verschachteln, um Raster zu erstellen. Für elementweise Array-Iteration bevorzuge foreach; für unbegrenzte Wiederholungen greife auf while zurück.