W3docs

PHP-Schleifen mit der Break-Anweisung

Erfahren Sie, wie break und continue in PHP Schleifen steuern – inklusive verschachtelter Schleifen mit break N und continue N.

Wenn Sie in PHP eine Schleife schreiben, benötigen Sie oft eine feinere Steuerung als „führe jede Iteration aus." Zwei Anweisungen geben Ihnen diese Kontrolle: break beendet die Schleife vorzeitig, und continue überspringt den Rest der aktuellen Iteration. Diese Seite behandelt beide, einschließlich ihrer Anwendung auf verschachtelte Schleifen mit break N und continue N.

Die Break-Anweisung verstehen

Die break-Anweisung beendet die aktuelle Schleife (oder switch) sofort und übergibt die Kontrolle an die erste Anweisung nach der Schleife. Verwenden Sie sie, wenn Sie gefunden haben, wonach Sie gesucht haben, oder wenn eine weitere Ausführung sinnlos oder unsicher wäre — beispielsweise nach dem Auffinden eines übereinstimmenden Datensatzes oder beim Auftreten eines Fehlers.

break funktioniert innerhalb von for-, foreach-, while- und do...while-Schleifen sowie innerhalb einer switch-Anweisung.

Hinweis: Die Verwendung von break außerhalb einer Schleife oder switch-Anweisung löst in PHP einen fatalen Fehler aus.

Die Break-Anweisung in einer For-Schleife verwenden

In einer for-Schleife kann die break-Anweisung verwendet werden, um die Schleife zu stoppen, wenn eine bestimmte Bedingung erfüllt ist. Der folgende Code verwendet beispielsweise eine for-Schleife, um eine Zahl in einem array zu suchen:

PHP-Beispiel für break in einer for-Schleife

php— editable, runs on the server

In diesem Code stoppt die Schleife, sobald der Wert von $numbers[$i] gleich 3 ist. Die Ausgabe dieses Codes lautet „Found 3 at index 2".

Die Break-Anweisung in einer Foreach-Schleife verwenden

In einer foreach-Schleife funktioniert die break-Anweisung ähnlich wie in der for-Schleife. Der folgende Code verwendet eine foreach-Schleife, um einen bestimmten Wert in einem assoziativen array zu suchen:

PHP-Beispiel für break in einer foreach-Schleife

php— editable, runs on the server

In diesem Code stoppt die Schleife, sobald der Schlüssel $color gleich „green" ist. Die Ausgabe dieses Codes lautet „green has hex code #00FF00".

Aus verschachtelten Schleifen ausbrechen

Die break-Anweisung kann auch verwendet werden, um aus verschachtelten Schleifen auszubrechen. Wird eine break-Anweisung innerhalb einer verschachtelten Schleife verwendet, wird nur die innerste Schleife beendet.

Der folgende Code verwendet beispielsweise zwei verschachtelte Schleifen, um einen bestimmten Wert in einem zweidimensionalen array zu suchen:

PHP-Beispiel für break in verschachtelten Schleifen

php— editable, runs on the server

In diesem Code wird die break 2-Anweisung verwendet, um zwei Verschachtelungsebenen zu verlassen. Die Ausgabe dieses Codes lautet Found 5 at [1][1].

Die Zahl nach break gibt an, wie viele umschließende Schleifen verlassen werden sollen, nicht einen Schleifenindex. break 1 ist dasselbe wie ein einfaches break, und die Zahl darf nicht größer als die tatsächliche Verschachtelungstiefe sein.

Die Continue-Anweisung verstehen

Während break die Schleife vollständig verlässt, überspringt continue nur den Rest der aktuellen Iteration und springt direkt zur nächsten. Die Schleife selbst läuft weiter. Dies ist die natürliche Wahl, wenn Sie einige Elemente ignorieren, aber dennoch alles andere verarbeiten möchten.

Die folgende Schleife gibt jede Zahl von 1 bis 10 aus, außer den geraden:

PHP-Beispiel für continue in einer for-Schleife

<?php

for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 == 0) {
        continue; // skip even numbers
    }
    echo "$i ";
}

?>

Die Ausgabe ist 1 3 5 7 9 — wenn $i gerade ist, überspringt continue das echo und die Schleife geht zum nächsten Wert über.

Continue in einer Foreach-Schleife

continue ist besonders nützlich in einer foreach-Schleife, wenn Sie Elemente beim Durchlaufen filtern möchten. Hier überspringen wir alle Produkte, die nicht vorrätig sind:

PHP-Beispiel für continue in einer foreach-Schleife

<?php

$products = array(
    array("name" => "Pen",      "stock" => 12),
    array("name" => "Notebook", "stock" => 0),
    array("name" => "Eraser",   "stock" => 5),
);

foreach ($products as $product) {
    if ($product["stock"] === 0) {
        continue; // don't list sold-out items
    }
    echo $product["name"] . " (" . $product["stock"] . " in stock)\n";
}

?>

Dies gibt Pen und Eraser aus und überspringt das nicht vorrätige Notebook.

Mehrere Ebenen mit continue N überspringen

Genau wie break N springt continue N zur nächsten Iteration einer äußeren Schleife. continue 2 beispielsweise startet die Schleife eine Ebene darüber neu:

PHP-Beispiel für continue 2 in verschachtelten Schleifen

<?php

for ($i = 1; $i <= 3; $i++) {
    for ($j = 1; $j <= 3; $j++) {
        if ($j == 2) {
            continue 2; // jump to the next $i
        }
        echo "i=$i j=$j\n";
    }
}

?>

Die innere Schleife gibt immer nur j=1 aus, weil das Erreichen von j == 2 die äußere Schleife neu startet. Die Ausgabe ist i=1 j=1, i=2 j=1, i=3 j=1.

Break vs. Continue

AnweisungWirkung
breakStoppt die Schleife vollständig; die Ausführung wird nach der Schleife fortgesetzt.
continueÜberspringt den Rest der aktuellen Iteration; die Schleife läuft weiter.
break NBricht aus N verschachtelten Schleifen auf einmal aus.
continue NSpringt zur nächsten Iteration der Schleife N Ebenen höher.

Häufige Fallstricke

  • continue in einer do...while-Schleife prüft die Bedingung trotzdem noch einmal. Der Bedingungstest wird nicht übersprungen, sodass die Schleife nach einem continue dennoch enden kann.
  • continue verhält sich innerhalb von switch anders. Innerhalb eines switch, das sich in einer Schleife befindet, wirkt continue wie break für den switch und gibt in modernem PHP eine Warnung aus. Verwenden Sie break, um den switch zu verlassen, und reservieren Sie continue für die umgebende Schleife.
  • Ein Off-by-one-Fehler mit continue in einer for-Schleife ist selten, weil der Inkrement-Ausdruck der for-Anweisung normal ausgeführt wird — aber in einer while-Schleife müssen Sie den Zähler vor continue aktualisieren, sonst kann eine Endlosschleife entstehen.

Fazit

Die break- und continue-Anweisungen geben Ihnen präzise Kontrolle über die Schleifenausführung: break beendet eine Schleife vorzeitig, während continue eine Iteration überspringt und weiterläuft. Die Formen break N und continue N erweitern diese Kontrolle auf verschachtelte Schleifen. Sehen Sie sich als Nächstes an, wie die verschiedenen Schleifentypen funktionieren — for, foreach, while und do...while.

Übungen

Übung
Was ist die primäre Funktion der 'break'- und 'continue'-Anweisungen in PHP?
Was ist die primäre Funktion der 'break'- und 'continue'-Anweisungen in PHP?
Was this page helpful?