恥ずかしながらのエントリーですが…
PHP でループ回している最中に switch 文入れて条件に応じて処理を飛ばす(ループの先頭に戻る)つもりで下記のようなコードを書いたところ
<?php foreach ($items as $item) { switch ($item->type) { case TYPE1: if(is_null($item->code)){ continue; } ... } } ?>
switch は抜けるもののループ内の処理は続行してしまい、はて…と思っていたのですが 公式ドキュメント を見ると思いっきり
注意: PHP では、continue の動作に関しては switch 文がループ構造とみなされるということに注意しましょう。
と書いてあり、こんなときは
continue 2;
などとしてレベルを指定するのだということを今更知るなど。
ちょっと気になったのが こちらのブログ で紹介されていた バグ で、continue 2
でメモリリークするというもの。使用する際は気に留めておく必要がありそうです。