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;となる。