PHPのcontinueとbreakでループをスキップ、終了する方法

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPでforeach()などのループ処理中に、不要な値をスキップするcontinueと、特定の値で処理を終了させるbreakの使い方をご紹介します。

 

continue文で特定の値をスキップする

ループ処理中に、配列の中にある不要な値をスキップしたい時があります。

そんな時は条件分岐でcontinueを使えば、簡単に特定の値をスキップできます。

下記サンプルは$status配列の中から、つよさのパラメーターだけ不要なのでスキップしています。

なまえ:えにくす
せいべつ:おとこ
レベル:5
HP:26
MP:11

上記のように、つよさを除いた配列を出力できました。

continueはループ処理のforeach()for()while()で使用可能です。

continueの動作

先ほどのサンプルでは、continueを以下のように使いました。

 

  1. 変数$statusの配列の中から、キーつよさが見つかったらcontinueに分岐させるif文を作成
  2. キーなまえ〜キーレベルまではif文の条件に該当しないのでelse側が発動し、繰り返し出力
  3. キーつよさがif文の条件に該当するためcontinueが発動し、処理をスキップ
  4. その次のキーHPMPはif文の条件に該当しないので、else側が発動し、繰り返し出力
  5. 結果、配列のキーつよさを除くキーと値が出力される

配列の中に余計な値が含まれている場合はcontinueでスキップする方法も覚えておきましょう。

continueでネストのループをコントロール

複数のネストしたループ処理で、単一のループ処理をスキップするだけでなく、外側のループ処理もまとめてスキップさせることもできます。

continue の結果

えにくす
せいべつ:おとこ
そうび:ぬののふく
もよもと
せいべつ:おとこ
そうび:ぬののふく
こういち
せいべつ:おとこ
そうび:ぬののふく

continue 2 の結果

えにくす
せいべつ:おとこ
そうび:ぬののふく

continue 2 の方は、えにくすのみが出力されています。

2つのサンプルでは下記のように処理が違います。

  • continue は現在のループ処理のみを対象
  • continue 2 は現在のループと、その外側のループ処理まで対象

ループのネストが3つの場合は continue 3 とcontinueの後に任意の数字を付けることで、多重ループでも思うようにコントロールできます。

break文でループ処理を終了させる

breakを使うと、配列のループ処理を途中で終了させることができます。

下記サンプルでは、キーつよさ以降の値を出力させないように、breakで処理を中断させています。

なまえ:えにくす
せいべつ:おとこ
レベル:5

上記のように、breakを使うことで処理が中断しました。

breakcontinue同様、ループ処理のforeach()for()while()で使用可能です。

breakの動作

先ほどのサンプルでは、breakを以下のように使いました。

 

  1. 変数$statusの配列の中から、キーつよさが見つかったらbreakに分岐させるif文を作成
  2. キーなまえ〜キーレベルまではif文の条件に該当しないのでelse側が発動し、繰り返し出力
  3. キーつよさがif文の条件に該当するためbreakが発動し、処理を終了
  4. その次のキーHPMPはif文の条件に該当しないが、breakにより処理が中止されたため出力されない
  5. 結果、配列のキーつよさ以降のキーと値は無視される

breakでネストのループをコントロール

breakでも複数のネストしたループ処理で、単一のループ処理をスキップするだけでなく、外側のループ処理もまとめてスキップさせることもできます。

break の結果

えにくす
せいべつ:おとこ
もよもと
せいべつ:おとこ
こういち
せいべつ:おとこ

break 2 の結果

えにくす
せいべつ:おとこ

break 2 の方は、えにくすのみが出力されています。

breakでも2つのサンプルでは下記のように処理が違います。

  • break は現在のループ処理のみを対象
  • break 2 は現在のループと、その外側のループ処理まで対象

ループのネストが3つの場合は break 3 とbreakの後に任意の数字を付けることで、多重ループでも思うようにコントロールできます。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*