【PHP】foreachのループをbreakで終了する方法と注意点

PHPプログラミングにおいて、foreach文のループを途中で終了させるにはbreakを使います。breakは知っていても、普段は使わない人も多いのではないでしょうか?

本記事では、breakを使ってforeachのループ処理を終了させる方法やbreakの注意点などを紹介しています。この機会に、ぜひ一度ご覧ください。

PHPのforeach文の使い方

PHPでは、foreach文を使って配列の要素数分、処理を繰り返すことができます。

foreach文の書き方は次の通りです。

for文やwhile文でループ処理を書く場合、終了させるための条件式が必要です。しかし、foreach文では配列の要素数分だけ処理を繰り返してくれるので、条件式を考える必要がありません。

その使いやすさから、PHPプログラミングのループ処理では、foreach文が最も多く利用されているといっても過言ではないでしょう。

breakでforeachのループを終了する

PHPのforeach文は、breakを使うことでループ処理を終了することができます。

breakを使用する方法は次の通りです。

出力結果
1111

上記サンプルコードでは、変数numに3つの文字列が格納されていましたが、2つ目の文字列を処理している途中に、breakでループ処理を終了しました。

そのため、出力されたのは、1つ目の文字列のみという結果になりました。

continueとの違いとは?

PHPのループ処理で使用されるものとして、breakとセットで覚えておきたいのがcontinueです。
breakはループ処理自体を終了させますが、continueは次のループにスキップするという違いがあります。

実際に処理の違いを見比べた方がわかりやすいと思うので、breakとcontinueの違いをサンプルコードを使って確認してみましょう。

出力結果
【breakの場合】
1111

【continueの場合】
1111
3333

上記サンプルコードの通り、変数numに格納された文字列は、breakでは1つ目の文字列のみ出力されましたが、continueでは1つ目と3つ目の文字列が出力されました。

レベル指定のbreakでforeachのループを終了する

PHPでは、breakの引数にレベルを指定することで、多重構造(ネスト)になっているループ処理の終了する階層を決めることができます。

まずは、breakの引数に「1」を指定した場合の動作を確認してみましょう。

出力結果
1232232223
11232232223
111232232223

上記サンプルコードでは、変数num3に格納された「33」のループ処理時に1階層分のループを終了しました。なお、breakに引数を指定しなかった場合も同じ動作になります。

次に、breakの引数に「2」を指定した場合の動作も確認してみましょう。

出力結果
123
1123
11123

上記サンプルコードの通り、今回は2階層分のループを終了したので変数num2と変数num3のループ処理が途中で中断されています。一方、3階層目にあたる変数num1のループ処理は、中断されずに最後まで処理されました。

最後に、breakの引数に「3」を指定した場合の動作も確認してみましょう。

出力結果
123

上記サンプルコードの通り、今回は3階層分のループを終了したので、breakが行われた時点で全てのforeach文のループ処理が終了しました。

breakを使うときは階層に注意する

breakが使われる処理で多いのは、エラー処理などの不測の事態が発生した場合です。このとき、breakで上手くループを終了させることができなければ、不具合が発生した状態で、別の処理を走らせるということになってしまいます。しかも、正常な状態では実行されない処理なので、気づかないことも多いです。

そのため、breakを使うループ処理の動作確認は十分行うようにしましょう。特に、多重構造のループ処理では、階層を意識してbreakを使う必要があります。そして、breakの引数を指定しなかった場合、レベル「1」を指定した状態だと理解しておきましょう。

まとめ

PHPプログラミングのforeach文で、ループ処理を途中終了させたい場合には、breakを使います。似たような機能をもつcontinueとは、次のループ処理に対する動作が異なります。違いをしっかりと理解しておきましょう。

また、多重構造になっているループ処理の場合、breakの引数にレベルを指定してループを終了させます。引数を指定しなかった場合は、1階層分のループ処理を終了させるという点に注意が必要です。

breakは、エラー処理などの重要な処理で使われます。動作確認を十分に行って、不具合のないように注意しましょう。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?