目次
はじめに
前回の記事では、while文を使った繰り返し処理について紹介しました。
前回の記事
本記事では、ループを中断するbreak文、ループ処理の途中で、残りの処理をスキップして次のループ処理に移るcontinue文について紹介します。
繰り返しを中断する(break文)
for文やwhile文などの繰り返しを途中で中断するには break(読み:ブレイク)文 を使います。
スポンサーリンク
break文の使用例
それでは、実際にPHPのプログラムでbreak文を使ったループの中断について紹介します。
次の例では、配列「$moneys」の要素数分 繰り返し処理を行い、変数「$total」に配列の値を加算。そして 変数「$total」が500を超えたらループを途中で中断しています。
[break文の使用例]
<?php $moneys = array(100,200,500,1000); $total = 0; foreach ($moneys as $value) { $total += $value; if ($total > 500) { break; } } print("合計金額:$total"); ?>
[実行結果]
合計金額:800
多重ループを一気に抜ける
ループの中でbreak文を使うと、そのループを中断させることができますが、多重ループの内側でbreak文を使っても内側のループを抜けるだけです。
while (条件) {
while (条件) {
break; // 内側のループを抜けるだけ
}
}
PHPのbreakはオプションの引数で、ネスト(条件分岐やループ)したループ構造を抜ける数を指定することができます。たとえば、二重ループを一気に抜けたい場合は「break 2」のように記述します。
while (条件) {
while (条件) {
break 2; // 二重ループを一気に抜ける
}
}
繰り返しを中断し、次の回に移る(continue文)
for文やwhile文などの繰り返しを途中で中断するbreak文に対し、continue文はループそのものを中断するのではなく、continue以降の処理をスキップし、次の回に移ります。
スポンサーリンク
continue文の使用例
それでは、実際にPHPのプログラムでcontinue文の使用例を紹介します。
次の例では「$i == 2」の条件に一致するときだけ、continue以降の処理をスキップしています。
[continue文の使用例]
<?php for($i = 0; $i < 5; $i++) { if ($i == 2) { continue; } print("iの値: $i<br />"); } ?>
[実行結果]
iの値: 0 iの値: 1 iの値: 3 iの値: 4
多重ループをスキップ
continue文では、break文同様にオプションの引数で処理をスキップするループ構造の数を指定できます。
以下は「continue」と「continue 2」の動きの違いのイメージ例です。
■多重ループ内での「continue」の動き
while (条件1) {
while (条件2) {
continue; // 以降の処理をスキップし、次の回(条件2)に移る
( 処理1 )
}
( 処理2 )
}
■多重ループ内での「continue 2」の動き
while (条件1) {
while (条件2) {
continue 2; // 以降の処理をスキップし、次の回(条件1)に移る
( 処理1 )
}
( 処理2 )
}
「continue」の場合は、一番近いループ「while (条件2)」に戻るが、「continue 2」の場合は、2番目に近い(※引数で指定した数分)ループ「while (条件1)」に戻ります。
次の例では、二重ループの中で「continue 2」を使用しています。
[スキップする数を指定した場合の例]
<?php for($i = 0; $i < 3; $i++) { print("iの値 : $i<br />"); for($j = 0; $j < 3; $j++) { print("jの値 : $j<br />"); if ($i + $j == 1) { print("条件一致<br />"); continue 2; } print("処理1<br />"); } print("処理2<br />"); } ?>
[実行結果]
iの値 : 0 jの値 : 0 処理1 jの値 : 1 条件一致 iの値 : 1 jの値 : 0 条件一致 iの値 : 2 jの値 : 0 処理1 jの値 : 1 処理1 jの値 : 2 処理1 処理2
終わりに
本記事では、ループを中断するbreak文、ループ処理の途中で、残りの処理をスキップして次のループ処理に移るcontinue文について紹介しました。
次回の記事では、PHPの条件分岐(switch文)について紹介します。
次回の記事