Jetzt anmelden...

Login
Passwort
Registrieren
05.08.19 1837 Views Kommentare [0] 1 0

credit: ©tonefotografia/ stock.adobe

PHP Blog

break und continue in verschachtelten Schleifen

break und continue sind praktisch zur Schleifensteuerung. Aber wie sieht es damit bei verschachtelten Schleifen aus?

Download als eBook

Thema in Kurzform

PHP break continue schleifen

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.

Falconbyte unterstützen

Kommentar schreiben

Alle Kommentare

Es gibt bislang noch keine Kommentare zu diesem Thema.

Java einrichten

Erfahren Sie, wie einfach es ist, mit Java zu beginnen

Vererbung einfach erklärt

Lernen Sie die Grundlagen der Vererbung in Java

Statische Elemente

Statische Variablen und Methoden nutzen

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2021 Stefan E. Heller

Impressum | Datenschutz

Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen