六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

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