今日ハマったのでメモ まず、今日まで知らなかったのですが、PHPにおいて switchはループ構造らしいです。 ですので、switch中のcontinueはすべてbreakと同じ扱いになります。 つまり、下記の例では<?php $list = array( '1', '2', '3', '4', ); foreach ($list as $num) { switch ($num) { case 1: continue; default: break; } echo $num . "\r\n"; }このように出力されます。1 2 3 4switch内にて1が来た場合ループに戻るように と書いていますが、これだとただ単にbreakするのと 一緒になります。 ですので、ループに戻りたい際は下記のように記述します。<?php $list = array( '1', '2', '3', '4', ); foreach ($list as $num) { switch ($num) { case 1: continue 2; default: break; } echo $num . "¥r¥n"; }これでなぜ、ループに戻ることができるのかというと、continueには 戻る階層を指定することができます。 ですので、下記記述ですと、2階層戻ることになりループに戻ることができます。continue 2;終わり 参考: PHP: switch - Manual
2012/02/27
【PHP】ループ中のswitchでcontinueしたときにはまった
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿