フリーダムPHPその3、多重ループを抜ける
PHPはwhileループやforループを何段階も抜ける記述方法がある。break 2; のように、breakのあとに数字を指定してやればよい。
<?php $i = 0; $j = 0; while ($i < 10) { while ($j < 10) { if ($j == 5) { break 2; // 2段階外側に抜ける } $j++; } $i++; //これは実行されない } echo "{$i}, {$j}"; // 0, 5 ?>
ふつーの構造化プログラミング言語だったらbreakする前にフラグを立てて、1段階外でフラグを見てもう1段階抜けるって書き方をするけれど、PHPは自由だねぇー。
なんとcontinueも多重で抜けられる。
<?php $i = 0; $j = 0; while ($i < 10) { $i++; while ($j < 10) { if ($j == 5) { continue 2; // 2つ上位のwhileまで戻る } $j++; } } echo "{$i}, {$j}"; // 10, 5 ?>