1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[PHP] Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? という警告

Last updated at Posted at 2020-11-13

##どんな警告か?
この警告は、forループ内のswitch文で「continue」を記述した場合に表示されます。
switch文内部では「continue」が「break」と同じ動作となるそう。
以下、公式リファレンスを引用

注意: PHP では、continue の動作に関しては switch 文がループ構造とみなされます。
continue に引数を渡さなかった場合の動きは break と同じですが、間違いの元なので警告が生成されます。
switch がループ内にある場合、 continue 2 とすると、外側のループの次回の処理から続行します。

引用元:PHP公式リファレンス

##じゃあどうすればいいの?
forループ内のswitch文で「continue」を使用したい場合、
continue 2」と指定します。
これで、「continue 2」は、switch文の外にあるforループを対象とします。
以下、参考コード

example.php
for ($i = 0; $i < 10; $i++) {
    switch (true) {
        case $i % 2 == 0 :
            // 偶数のときだけ実行する処理
            break;
        default:
            // 奇数のときはスキップされる
            continue 2;
    }
}

以上です。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?