continue

(PHP 4, PHP 5, PHP 7)

continue wird innerhalb von Schleifen verwendet, um den Rest des aktuellen Schleifendurchlaufs abzubrechen und mit der Auswertung der nächsten Bedingung fortzufahren, um dann den nächsten Durchlauf zu beginnen.

Hinweis: In PHP wird das switch-Statement im Sinne von continue als Schleifenstruktur betrachtet. continue verhält sich wie break (wenn keine Argumente übergeben werden). Falls sich ein switch innerhalb einer Schleife befindet, wird continue 2 mit der nächsten Iteration der äußeren Schleife fortsetzen.

continue akzeptiert ein optionales numerisches Argument, das angibt, wie viele Ebenen umschließender Schleifen bis zu ihrem Ende übersprungen werden sollen. Die Voreinstellung ist 1, so dass zum Ende der aktuellen Schleife gesprungen wird.

<?php
foreach ($arr as $key => $value) {
    if (!(
$key 2)) { // ignoriere gerade Werte
        
continue;
    }
    
mach_etwas_ungerade($value);
}

$i 0;
while (
$i++ < 5) {
    echo 
"Äußere<br />\n";
    while (
1) {
        echo 
"Mittlere<br />\n";
        while (
1) {
            echo 
"Innere<br />\n";
            continue 
3;
        }
        echo 
"Das hier wird nie ausgegeben.<br />\n";
    }
    echo 
"Das hier ebenfalls nicht.<br />\n";
}
?>

Das Weglassen des Semikolons nach continue kann zu unerwarteten Ergebnissen führen. Hier ist ein Beispiel, das zeigt, was Sie nicht tun sollten.

<?php
for ($i 0$i 5; ++$i) {
    if (
$i == 2)
        continue
    print 
"$i\n";
}
?>

Man könnte meinen, die Ausgabe wäre:

0
1
3
4

aber in PHP Versionen vor 5.4.0 gibt das Skript in Wirklichkeit ...

2

... aus, da continue print "$i\n"; als ein Ausdruck ausgewertet wird, und print somit nur aufgerufen wird, wenn $i == 2 ist. (Der Rückgabewert von print wird an continue als numerisches Argument übergeben.)

Hinweis:

Von PHP 5.4.0 an erzeugt das obige Beispiel einen E_COMPILE_ERROR Fehler.

Changelog für continue
Version Beschreibung
7.0.0 continue außerhalb einer Schleife oder einer switch Kontrollstruktur wird nun zur Übersetzungszeit anstatt wie zuvor zur Laufzeit erkannt, und löst einen Fehler der Stufe E_COMPILE_ERROR aus.
5.4.0 continue 0; ist nicht länger gültig. In vorherigen Versionen wurde es analog continue 1; interpretiert.
5.4.0 Die Möglichkeit Variablen (z.B., $num = 2; continue $num;) als numerisches Argument übergeben zu können wurde entfernt