Falconbyte unterstüzen
Betrieb und Pflege von Falconbyte brauchen viel Zeit und Geld. Um dir auch weiterhin hochwertigen Content anbieten zu können, kannst du uns sehr gerne mit einem kleinen "Trinkgeld" unterstützen.
Thema in Kurzform
Funktion von break und continue
Was break und continue in einfachen Schleifenkonstruktionen bewirken, sehen wir hier:
Beispiel für break in einer Schleife:
for($i = 1; $i <= 3; $i++){
if($i == 2){
break;
}
echo "$i ";
}
// Output: 1
Beispiel für continue in einer Schleife:
for($i = 1; $i <= 3; $i++){
if($i == 2){
continue;
}
echo "$i ";
}
// Output: 1 3
Während also break die gesamte Schleife abbricht, beendet continue den aktuellen Schleifendurchlauf und springt zum nächsten.
Kalter Kaffee. Wie sieht das aber bei verschachtelten Schleifen aus?
break und continue bei verschachtelten Schleifen
Sehen wir uns hierzu erst einmal eine verschachtelte for-Schleife ohne break/ continue an:
for($i = 1; $i <= 3; $i++){
for($y = 1; $y <= 3; $y++){
echo $i . " " . $y . "<br>";
}
}
Der Output ist:
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3
break und continue in der inneren Schleife
Jetzt bauen wir in der inneren Schleife eine break-Anweisung ein, die ausgeführt wird, wenn $y == 2 true ist:
for($i = 1; $i <= 3; $i++){
for($y = 1; $y <= 3; $y++){
if($y == 2){
break;
}
echo $i . " " . $y . "<br>";
}
}
Wie zu erwarten, bricht break die innere Schleife bei $y == 2 komplett ab und es beginnt der nächste Durchlauf der äußeren Schleife. Die innere Schleife kommt damit immer nur bis zum $y-Wert von 2 (wobei 2 schon nicht mehr ausgegeben wird). Der Output lautet entsprechend:
1 1
2 1
3 1
Dieselbe Schleifenkonstruktion nun mit einem continue in der inneren Schleife:
for($i = 1; $i <= 3; $i++){
for($y = 1; $y <= 3; $y++){
if($y == 2){
continue;
}
echo $i . " " . $y . "<br>";
}
}
Nun bricht die innere Schleife nicht mehr komplett ab, sondern beendet nur den aktuellen inneren Schleifendurchlauf. Die innere Schleife läuft also beim $y-Wert von 3 weiter. Der Output lautet:
1 1
1 3
2 1
2 3
3 1
3 3
break 2 und continue 2
Wenn wir von der inneren Schleife aus die umgebende äußere Schleife steuern wollen, schreiben wir hinter break bzw. continue die Zahl 2:
for($i = 1; $i <= 3; $i++){
for($y = 1; $y <= 3; $y++){
if($y == 2){
break 2;
}
echo $i . " " . $y . "<br>";
}
}
Wenn die Schleifenvariable der inneren Schleife $y den Wert 2 hat, beendet break 2 sofort die äußere Schleife. Damit ist auch das komplette Schleifenkonstrukt beendet und der Output lautet:
1 1
Setzen wir in der inneren Schleife continue 2 ein, wird stets der aktuelle äußere Schleifendurlauf beendet.
for($i = 1; $i <= 3; $i++){
for($y = 1; $y <= 3; $y++){
if($y == 2){
continue 2;
}
echo $i . " " . $y . "<br>";
}
}
Output:
1 1
2 1
3 1
break 3 und continue 3
In dreidimensionalen Schleifen kann man sogar break 3 bzw. continue 3 einsetzen, um von der innersten Schleife die äußerste zu steuern. Hier ein Beispiel mit break 3:
for($i = 1; $i <= 3; $i++){
for($y = 1; $y <= 3; $y++){
for($z = 1; $z <= 3; $z++){
if($z == 2){
break 3;
}
echo $i . " " . $y . " " . $z . "<br>";
}
}
}
Ergebnis:
1 1 1
Weiter wollen wir es hier nicht treiben 😀
Habt Ihr noch Fragen zu diesem Thema? Dann schreibt einfach in die Kommentare.