05.08.19 5470 Views 4

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?

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

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.

Java lernen

text text

PHP Lernen

zur PHP

JavaScript lernen

move nove move

FALCONBYTE.NET

Handmade with 🖤️

© 2018-2023 Stefan E. Heller

Impressum | Datenschutz | Changelog

Falconbyte Youtube Falconbyte GitHub facebook programmieren lernen twitter programmieren lernen discord programmieren lernen