continue
continue
(PHP 4, PHP 5, PHP 7)
continue
is used within looping structures to skip the rest of the current loop iteration and continue
execution at the condition evaluation and then the beginning of the next iteration.
Note
: In PHP theswitch
statement is considered a looping structure for the purposes ofcontinue
.continue
behaves likebreak
(when no arguments are passed). If aswitch
is inside a loop,continue 2
willcontinue
with the next iteration of the outer loop.
continue
accepts an optional numeric argument which tells it how many levels of enclosing loops it should skip to the end of. The default value is 1
, thus skipping to the end of the current loop.
<?php
while (list($key, $value) = each($arr)) {
if (!($key % 2)) { // skip even members
continue;
}
do_something_odd($value
}
$i = 0;
while ($i++ < 5) {
echo "Outer<br />\n";
while (1) {
echo "Middle<br />\n";
while (1) {
echo "Inner<br />\n";
continue 3;
}
echo "This never gets output.<br />\n";
}
echo "Neither does this.<br />\n";
}
?>
Omitting the semicolon after continue
can lead to confusion. Here's an example of what you shouldn't do.
<?php
for ($i = 0; $i < 5; ++$i) {
if ($i == 2)
continue
print "$i\n";
}
?>
One can expect the result to be:
0
1
3
4
but, in PHP versions below 5.4.0, this script will output:
2
because the entire continue print "$i\n";
is evaluated as a single expression, and so print
is called only when $i == 2
is true. (The return value of print
is passed to continue
as the numeric argument.)
Note
: As of PHP 5.4.0, the above example will raise anE_COMPILE_ERROR
error.
Version | Description |
---|---|
5.4.0 | continue 0; is no longer valid. In previous versions it was interpreted the same as continue 1;. |
5.4.0 | Removed the ability to pass in variables (e.g., $num = 2; continue $num;) as the numerical argument. |
← break
switch →
© 1997–2017 The PHP Documentation Group
Licensed under the Creative Commons Attribution License v3.0 or later.
https://secure.php.net/manual/en/control-structures.continue.php