【PHP入門】ループをbreakで終了する(foreach, for, while)

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を渡すことはできなくなりました。

ちなみに、配列やループの細かい書き方については説明を省いていますので、知りたい方はこちらの記事を見てみてくださいね。

10分で丸わかり!PHPの配列(array)の基礎から応用まで解説
更新日 : 2019年8月7日
【PHP for文】初心者が覚えておくべき3つのポイントとは
更新日 : 2019年3月14日

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などの繰り返し処理でループを終了する方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。