フリーダム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
?>

コメントを残す

メールアドレスが公開されることはありません。