(PHP 4, PHP 5, PHP 7)
continue は、ループ構造において現在の繰り返しループ の残りの処理をスキップし、条件式を評価した後に 次の繰り返しの最初から実行を続けるために使用されます、
注意: PHP では、continue の動作に関しては switch 文がループ構造とみなされます。 continue に引数を渡さなかった場合の動きは break と同じです。 switch がループ内にある場合、 continue 2 とすると、外側のループの次回の処理から続行します。
continueでは、オプションの引数で 処理をスキップするループ構造のレベルの数を指定できます。 デフォルト値は 1 で、 これは現在のループの終了地点までスキップします。
<?php
foreach ($arr as $key => $value) {
if (!($key % 2)) { // キーが偶数の組をスキップします
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";
}
?>
continue の後のセミコロンを省略すると混乱を生じることがあります。 以下の例のようなことをしてはいけません。
<?php
for ($i = 0; $i < 5; ++$i) {
if ($i == 2)
continue
print "$i\n";
}
?>
これは、以下のような結果になることを期待していたのでしょう。
0 1 3 4
しかし、PHP 5.4.0 より前のバージョンでは、このスクリプトの出力は以下のようになります。
2
continue print "$i\n"; は全体でひとつの式として評価されるので、 print がコールされるのは $i == 2 が true のときだけです (print の返り値が continue への数値引数として渡されます)。
注意:
PHP 5.4.0 以降では、先ほどの例を実行すると
E_COMPILE_ERROR
エラーが発生するようになりました。
バージョン | 説明 |
---|---|
7.0.0 |
ループまたは switch 制御構造の外部の continue は、
以前のように実行時ではなくコンパイル時に検出されるようになり、E_COMPILE_ERROR をトリガーします。
|
5.4.0 | continue 0; が使えなくなりました。今までのバージョンでは、これは continue 1; と同じ意味に解釈されていました。 |
5.4.0 | 数値引数の部分に変数を渡すこと (例: $num = 2; continue $num;) ができなくなりました。 |