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
continueals Schleifenstruktur betrachtet.continueverhält sich wiebreak(wenn keine Argumente übergeben werden), erzeugt aber eine Warnung, da es sich vermutlich um einen Fehler handelt. Falls sich einswitchinnerhalb einer Schleife befindet, wirdcontinue 2mit 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_ERRORFehler.
| Version | Beschreibung |
|---|---|
| 7.3.0 |
continue innerhalb eines switch,
das versucht wie eine break-Anweisung für das
switch zu wirken, erzeugt ein E_WARNING.
|
| 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
|