JavaScriptで多重ループを抜ける方法メモ(+PHP)

JavaScriptでは多重ループを抜ける際に「ラベル」が使える。

label:
for(var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
        if (j == 5) {
            break label;
        }
        document.write(i+'-'+j+'<br />');
    }
}

のようにbreakの後にラベル名を付けることで
labelのある範囲までをbreakの対象にできる。


簡単な例として人間の生活をループ文で表してみる。


充実した生活(通常の多重ループ)

var array1 = ['朝', '昼', '夜'];
var array2 = ['トイレ', 'ご飯', '勉強'];
document.write('・理想的な生活スタイル<br />');
for(var i = 0; i < array1.length; i++) {
    for (var j = 0; j < array2.length; j++) {
        document.write(array1[i]+array2[j]+'<br />');
    }
}


実行結果

・理想的な生活スタイル
朝トイレ
朝ご飯
朝勉強
昼トイレ
昼ご飯
昼勉強
夜トイレ
夜ご飯
夜勉強


breakを使用して勉強をサボる(ループをひとつ抜ける)

document.write('・勉強嫌いの生活スタイル<br />');
for(var i = 0; i < array1.length; i++) {
    for (var j = 0; j < array2.length; j++) {
        if (j == array2.length - 1) break;  //二番目のループを抜ける
        document.write(array1[i]+array2[j]+'<br />');
    }
}


実行結果

・勉強嫌いの生活スタイル
朝トイレ
朝ご飯
昼トイレ
昼ご飯
夜トイレ
夜ご飯


朝ご飯を食べたら一日が終了(多重ループを抜ける)

document.write('・朝しか動かない生活スタイル<br />');
label:
for(var i = 0; i < array1.length; i++) {
    for (var j = 0; j < array2.length; j++) {
        if (j == array2.length - 1) break label; //一番目のループまで抜ける
        document.write(array1[i]+array2[j]+'<br />');
    }
}


実行結果

・朝しか動かない生活スタイル
朝トイレ
朝ご飯
  • 同じ処理をPHPでやるには

PHPの場合はbreakの後ろに中断するループのレベルを指定する。
例えば、三重ループを抜ける場合はbreak 3;となる。



参考:
マンガで分かる JavaScriptプログラミング講座

多重ループを抜けるには – for文 – continue – break