MENU

【PHP】Lesson2-7:繰り返し処理を自在に制御しよう|break・continueの使い方

tggaa478@yahoo.co.jp

繰り返し処理はプログラムで頻繁に利用されますが、繰り返しの途中で特定の条件で処理を中断したり、スキップしたりする場面がよくあります。

これを「繰り返しの制御」といい、PHPでは主に「break」と「continue」を使用します。

また、誤った条件設定による無限ループにも注意が必要です。

Lesson1:基礎文法編
Lesson2:制御構造編

 ・Lesson2-1:比較演算子と論理演算子
 ・Lesson2-2:if文による分岐処理を理解しよう
 ・Lesson2-3:条件演算子を使いこなそう
 ・Lesson2-4:switch文による分岐処理を理解しよう
 ・Lesson2-5:for文による繰り返し処理を理解しよう
 ・Lesson2-6:while文による繰り返し処理を理解しよう
 ・Lesson2-7:繰り返しを制御しよう ◁今回はココ
 ・Lesson2-8:エラーメッセージを読めるようになろう
 ・Lesson2-9:例外処理を理解しよう
 ・確認問題2-1:ハイアンドロー ゲームを作ろう
 ・確認問題2-2:数字当てゲームを作ろう
 ・確認問題2-3:シンプルなじゃんけんゲームを作ろう
Lesson3:関数編
Lesson4:データ構造編
Lesson5:クラス

<<前のページ

学習記事一覧

次のページ>>

繰り返し処理の制御方法|PHPでbreak・continueを使いこなすには

繰り返しの制御とは、ループ処理中に以下のような挙動を実現する仕組みです。

  1. break:現在のループを終了し、ループの外へ出る。
  2. continue:現在のループの残りの処理をスキップし、次のループへ進む。
  3. 無限ループ:終了条件が満たされず、永遠に続くループ。

これらを正しく理解することで、プログラムの意図した動作を効率よく実現できます。

break文の使い方|ループを途中で終了する方法

break文は繰り返し処理を途中で終了したい場合に使用します。

例えば、特定の条件に一致した時にループを終了する場合です。

以下の例では、ループの中で条件が一致した場合に処理を終了します。

<?php
for ($i = 1; $i <= 10; $i++) {
    echo "Number: $i" . PHP_EOL;
    if ($i === 5) {
        break; // $iが5のときにループを終了
    }
}

このコードを実行すると以下のように出力されます。

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

「break」により、条件 $i === 5 が成立するとループが終了します。

continue文の使い方|処理をスキップして次のループへ進む

continue文は現在のループの残りの処理をスキップし、次の繰り返しに進む場合に使用します。

以下の例では、偶数をスキップして奇数だけを表示します。

<?php
for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 === 0) {
        continue; // 偶数はスキップ
    }
    echo "Odd Number: $i" . PHP_EOL;
}

「continue」により、条件 $i % 2 === 0 が成立する場合、echoの処理をスキップしています。

PHPのループ制御まとめ|breakとcontinueをマスターしよう

  • break:現在のループを終了します。
  • continue:現在のループの残り処理をスキップし、次のループに進みます。
  • 無限ループには注意が必要で、終了条件を必ず設定しましょう。

これらの制御をマスターすれば、繰り返し処理を柔軟にコントロールできるようになります。

次回はエラーメッセージや例外処理を学び、さらに高度なプログラムを作成していきましょう!

演習問題|breakとcontinueを使ってループを柔軟にコントロールしよう

PHPのfor文と制御文breakcontinueを使い、条件に応じて繰り返しの挙動を変更するプログラムを作成しましょう。

このプログラムでは1から10までの数字を順に表示しますが、特定の条件で処理をスキップしたり、ループを終了する動作を実装します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • for文を使用して1から10までの数字を繰り返し処理する。
  • 数字が3の場合、現在のループをスキップし、次のループに進む。
  • 数字が8の場合、ループ全体を終了する。
  • 各ループで現在の数字を表示する。
  • スキップ時および終了時には、対応するメッセージを表示する。

ただし、以下のような実行結果となること。

現在の数字: 1
現在の数字: 2
数字3はスキップされました。
現在の数字: 4
現在の数字: 5
現在の数字: 6
現在の数字: 7
数字8でループを終了します。

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:for文を使用して変数$iを1から10まで繰り返す
  □ if文で変数$iが3であるかを判定
  □ □ 真の場合、「数字3はスキップされました。」を出力
  □ □ continue文を使用してループの次の反復にスキップする
  □ if文で変数$iが8であるかを判定
  □ □ 真の場合、「数字8でループを終了します。」を出力
  □ □ break文を使用してループを終了する
  □ それ以外の場合、「現在の数字: $i」を出力する

Q
ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

<?php

for ($i = 1; $i <= 10; $i++) {
    // $iが3の場合にループをスキップ(continue文の使用例)
    /* 【穴埋め問題1】
       ここにif文を記述し、変数$iが3の場合にメッセージを表示してcontinue文を実行するコードを書いてください。
    */

    // $iが8の場合にループを終了(break文の使用例)
    /* 【穴埋め問題2】
       ここにif文を記述し、変数$iが8の場合にメッセージを表示してbreak文を実行するコードを書いてください。
    */

    // それ以外の数字を表示
    echo "現在の数字: $i" . PHP_EOL;
}

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

この問題の答え合わせ

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
<?php

for ($i = 1; $i <= 10; $i++) {
    // $iが3の場合にループをスキップ(continue文の使用例)
    if ($i === 3) {
        echo "数字3はスキップされました。" . PHP_EOL; // スキップされる際のメッセージ
        continue; // 以降の処理をスキップして次の繰り返しへ
    }

    // $iが8の場合にループを終了(break文の使用例)
    if ($i === 8) {
        echo "数字8でループを終了します。" . PHP_EOL; // 終了時のメッセージ
        break; // ループを終了
    }

    // それ以外の数字を表示
    echo "現在の数字: $i" . PHP_EOL;
}
Q
正解コードの解説

コードをブロックごとに分割して解説します。

for文の開始

for ($i = 1; $i <= 10; $i++) {
  1. for文は、指定した回数だけ処理を繰り返す制御構文です。
  2. ($i = 1; $i <= 10; $i++)の意味:
    • $i = 1: ループカウンタを1に初期化します。
    • $i <= 10: $iが10以下の間、ループを繰り返します。
    • $i++: ループごとにカウンタを1ずつ増やします。

この構文により、1から10までの数字を順に処理します。

continue文の使用

if ($i === 3) {
    echo "数字3はスキップされました。" . PHP_EOL;
    continue;
}
  • $i === 3: $iが3に等しい場合に条件が成立します。
  • continue文: 現在のループの残りの処理をスキップし、次のループに移ります。
  • この場合$iが3の時に「数字3はスキップされました。」というメッセージを表示し、ループ内の後続処理を行わずに次の数字へ進みます。

break文の使用

if ($i === 8) {
    echo "数字8でループを終了します。" . PHP_EOL;
    break;
}
  • $i === 8: $iが8に等しい場合に条件が成立します。
  • break文: ループ全体を終了し、ループの外へ抜け出します。
  • この場合、$iが8の時に「数字8でループを終了します。」というメッセージを表示して、以降のループを中断します。

数字の表示

echo "現在の数字: $i" . PHP_EOL;
  • この行は現在処理中の数字を表示します。
  • $iの値を「現在の数字:」に続けて出力します。
  • PHP_EOLは改行文字で、結果を見やすく整えます。

まとめ

このコードでは繰り返し処理の中でbreakcontinueを使用し、条件に応じたループの制御方法を学びます。

  • continue文: 特定の条件で現在のループをスキップして次のループに進みます。
  • break文: 特定の条件でループを完全に終了します。

このプログラムを通じて、PHPの繰り返し処理における制御文の基本を学びました。

これらの制御文を使うことで、プログラムを柔軟に操作できるようになります。

繰り返し処理の応用を試してみて、さらなるスキルアップを目指しましょう!

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいPHP学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました