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 wiebreak
(wenn keine Argumente übergeben werden), erzeugt aber eine Warnung, da es sich vermutlich um einen Fehler handelt. Falls sich einswitch
innerhalb einer Schleife befindet, wirdcontinue 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.
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
|