Menu

PHP for-Schleife: Syntax, Arrays, break und continue

for ($i = 0; $i < 10; $i++) { ... } führt einen Block eine feste Anzahl von Malen aus: Startwert, eine Bedingung, die vor jedem Durchlauf geprüft wird, und ein Schritt. Mit Arrays über den Index durchlaufen, Herunterzählen, verschachtelten Schleifen, break und continue.

Diese Seite enthält ausführbare Editoren - bearbeiten, ausführen und Ausgabe sofort sehen.

for ($i = 0; $i < 5; $i++) { ... } führt den Block eine feste Anzahl von Malen aus. Die drei Teile sind der Start ($i = 0, läuft einmal), die Bedingung ($i < 5, wird vor jedem Durchlauf geprüft) und der Schritt ($i++, läuft nach jedem Durchlauf). Die Schleife endet, sobald die Bedingung falsch ist.

$i existiert nach der Schleife weiter und enthält den Wert, der die Bedingung falsch gemacht hat (6). PHP hat keinen Block-Scope für Schleifenvariablen.

Ein Array mit Index durchlaufen

Bei einer Liste mit den Schlüsseln 0, 1, 2 ... dient der Zähler gleichzeitig als Index. Speichere count() vorher in einer Variable, damit es nicht bei jedem Durchlauf erneut aufgerufen wird.

Der erste Teil kann mehrere durch Kommas getrennte Ausdrücke enthalten, und so wird $n = count($fruits) einmal gesetzt. Wenn du nur jeden Wert brauchst (und nicht seine Nachbarn), ist foreach kürzer und funktioniert auch bei Arrays, deren Schlüssel nicht von 0 bis n - 1 laufen.

Herunterzählen und in größeren Schritten zählen

Der Schritt kann ein beliebiger Ausdruck sein: $i-- zum Herunterzählen, $i += 2 für jede zweite Zahl, $i *= 2 für Zweierpotenzen.

range('a', 'h') baut das Array ['a', 'b', ... 'h']. Mit range(1, 10) und foreach bekommst du dieselbe Zählung wie mit einer for-Schleife, musst aber zuerst das ganze Array aufbauen.

break und continue

break beendet die Schleife sofort. continue überspringt den Rest des aktuellen Durchlaufs und springt zum Schritt und zur nächsten Prüfung der Bedingung.

Die zweite Schleife hat eine leere Bedingung, was „immer wahr“ bedeutet, also läuft sie bis zum break. In verschachtelten Schleifen wirken break 2 und continue 2 auf die äußere Schleife, wie das nächste Beispiel zeigt.

Verschachtelte for-Schleifen: ein Einmaleins

Eine Schleife in einer Schleife führt die innere Schleife bei jedem Durchlauf der äußeren komplett aus. Hier ist die Ausgabe HTML, also zeigt der Tab Page eine echte Tabelle.

Ändere $size auf 12 und führe den Code erneut aus. Die Form for (...): und endfor; ist die alternative Syntax, die Schleifen zwischen HTML-Tags lesbar hält. Dieselbe Tabelle als reiner Text gebaut, und mit break 2, um beide Schleifen zu stoppen:

Typische Fehler: um eins daneben und die Endlosschleife

Die zwei klassischen for-Bugs: <= mit count() liest ein Element hinter dem Ende, was PHP als Warning: Undefined array key 3 meldet und als null behandelt; und ein Schritt, der den Zähler nie Richtung Ende bewegt ($i--, wo du $i++ meintest), hält die Bedingung für immer wahr.

Für Schleifen, deren Länge du vorher nicht kennen kannst, etwa beim Lesen bis zum Ende einer Datei, passt eine while-Schleife besser.

Häufig gestellte Fragen

Wie durchlaufe ich in PHP ein Array mit Index?

Bei einer Liste mit den Schlüsseln 0, 1, 2 verwendest du for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; }. In den meisten Fällen ist foreach ($arr as $i => $value) einfacher, liefert denselben Index und funktioniert auch, wenn die Schlüssel nicht von 0 bis n minus 1 laufen.

Wie breche ich in PHP aus einer for-Schleife aus?

break; verlässt die Schleife sofort. In verschachtelten Schleifen verlässt break 2; die innere Schleife und die äußere darum herum. continue; überspringt den Rest des aktuellen Durchlaufs und macht mit dem nächsten weiter.

Wie zähle ich in PHP mit einer for-Schleife herunter?

Fang hoch an, vergleiche mit >= und zähle herunter: for ($i = 10; $i >= 1; $i--) { echo $i; }. Für andere Schrittweiten als eins änderst du den dritten Teil, zum Beispiel $i += 2 oder $i -= 5.

Wann sollte ich in PHP for statt foreach verwenden?

Verwende for, wenn du etwas zählst (5 Mal wiederholen, Zahlen von 1 bis 100, jedes zweite Element) oder das nächste oder vorherige Element über den Index brauchst. Verwende foreach, um jedes Element eines Arrays zu besuchen, besonders bei assoziativen Arrays, die keinen numerischen Index haben.

Illustration der Programmiersprachen bei Coddy

Lerne mit Coddy zu programmieren

LOS GEHT'S