PHPでは、foreachなどの繰り返し文でbreakを使用してループ処理を終了することができます。
この記事では、
・breakとは
・continueとの違い
・breakの使い方
という基本的な内容から、
・breakのレベルを指定する方法
・breakの使用上の注意点
などの応用的な使い方に関しても解説していきます。
今回はそんなforeachでループを終了する方法について、わかりやすく解説します!
breakとは
breakとはfor, foreach, while, do-while, switchなどの繰り返し文のループ処理を終了するときに使用します。
breakはオプションで引数を指定することが可能で、指定した引数によりループ構造のレベルを指定することができます。
foreach($配列名 as $値){ break [数値] }
なお、breakはデフォルト値は1で設定されています。
また、PHPのバージョン5.4.0からbreakの引数に数値型の変数や0を渡すことはできなくなりました。
ちなみに、配列やループの細かい書き方については説明を省いていますので、知りたい方はこちらの記事を見てみてくださいね。
continueとの違い
breakはループ処理を終了するときに使用するのに対して、continueはループの残りの処理をスキップして、次の繰り返し処理から始めるときに使用します。
continueも繰り返し処理において使用する頻度が高いため、使い方をしっかりと覚えておきましょう。
continueに関しては、以下の記事で詳しく解説しています。
breakの使い方
以下にforeach文を使用して配列をループして空の文字列があったら、breakを指定してループを終了する処理を記述します。
<?php $fruits1 = ['apple', 'orange', "", 'banana', 'pineapple']; foreach($fruits1 as $value){ //配列の要素が空の場合はbreakでループをスキップする if (empty($value)){ break; }else{ $fruits2[] = $value; } } foreach($fruits2 as $value){ echo $value; echo '<br>'; } ?>
実行結果 apple orange
サンプルでは、empty関数を使用して配列の要素が空の場合はbreakを指定して、ループ処理を終了しています。
レベルを指定する
繰り返し文が多重構造(ネスト)になっている場合、どの階層の繰り返し文を終了するか指定する場合は、前述したようにbreakの引数にレベルを指定します。
以下にfor文でbreakでレベルを指定して、繰り返し文を終了する方法を記述します。
<?php $fruits1 = ['apple1', 'orange1', 'melon1']; $fruits2 = ['apple2', 'orange2', 'melon2']; $fruits3 = ['apple3', 'orange3', 'melon3']; for($i = 0; $i < count($fruits1); $i++){ echo $fruits1[$i]; echo '
'; for($j = 0; $j < count($fruits2); $j++){ echo $fruits2[$j]; echo '
'; for($k = 0; $k < count($fruits3); $k++){ echo $fruits3[$k]; echo '
'; break 3; } } } ?>
実行結果 apple1 apple2 apple3
紹介したサンプルでは、breakでレベルを3で指定しているため、現在のループとその上の階層のループ、更にその上のループの、3重のループを抜けることができます。
breakをのレベルを2で指定した場合は2重のループを抜けるため、$fruits1の階層のforeachからループが再開されます。
breakの注意点
初心者の方で誤解を招きやすいのが、多重構造の繰り返し文の中の最深部でbraekを使用しても、引数でレベルを指定しなければ繰り返し文を終了することはできません。
例えば以下の4重構造のループを終了するためにはbreakのレベルを4で指定する必要があります。
foreach($array1 as $value1){ foreach($array2 as $value2){ foreach($array3 as $value3){ foreach($array4 as $value4){ break 4; } } } }
このサンプルは極端な例ですが、可読性の面からも繰り返し文での入れ子の多様は、可能な限り避けるようにしましょう。
ループ処理についてもっと詳しく知りたい方へ
ループ処理のさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!
まとめ
ここでは、foreach文の中でbreakでループを終了する方法やレベルの指定方法、breakの使用上の注意点などについて説明しました。
foreachなどの繰り返し処理で、continueやbreakといった処理は使用頻度が高いと言えますので、この機会にぜひ覚えておきましょう。
もし、foreachなどの繰り返し処理でループを終了する方法を忘れてしまったら、この記事を思い出してくださいね!