【PHP】Lesson2-7:繰り返し処理を制御しよう

一つ前のレッスンでは while文による繰り返し処理 について学習しました。
今回は 繰り返しの制御 について見ていきましょう。
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:クラス編
ループ処理を制御する方法|break・continueの基本と使い分け
PHPで繰り返し処理を書く際、「break」と「continue」は処理の流れを柔軟にコントロールするための重要な構文です。
無限ループの回避や、特定の条件でループをスキップ・終了させるなど、効率的なコードを書くために欠かせない知識です。
これを習得すれば、より実践的で読みやすいコードが書けるようになります。ぜひこの記事で、ループ処理のスキルを一段階アップさせましょう。

break文とは|ループを中断する基本的な使い方と注意点
break文 は特定の制御構造を途中で終了させる構文です。
例えば、switch文の中で条件に合う処理を実行し終えた時や、ループ処理の中で特定の条件に一致した時などに使用されます。
以下のコードは、ループの中で条件が一致した場合にbreakで処理を終了する例です。
<?php for ($i = 1; $i <= 10; $i++) { // 変数$iが1から10まで、インクリメントしながら echo "Number: $i" . PHP_EOL; // この処理を実行 if ($i === 5) { // もし変数$iが整数型の5なら break; // 繰り返し処理を終了 } }
このコードを実行すると以下のように出力されます。
Number: 1 Number: 2 Number: 3 Number: 4 Number: 5
「break」により、条件 $i === 5
が成立したときにループが終了している点を確認しましょう。
continue文とは|特定条件で処理をスキップする実用的な使い方
continue文 は現在のループの残りの処理をスキップし、次の繰り返しに進む場合に使用します。
以下の例では、偶数をスキップして奇数だけを表示します。
<?php for ($i = 1; $i <= 10; $i++) { // 変数$iが1から10まで、インクリメントしながら if ($i % 2 === 0) { // もし変数$iが偶数なら continue; // 今回のループを終了し。次のループへ移行 } echo "Odd Number: $i" . PHP_EOL; }
「continue」により、条件 $i % 2 === 0
が成立する場合、echo
の処理をスキップしています。
このコードを実行すると以下のように出力されます。
Odd Number: 1 Odd Number: 3 Odd Number: 5 Odd Number: 7 Odd Number: 9
まとめ|break・continueでループ処理を自在に制御しよう
この記事では、PHPにおけるbreak
文とcontinue
文の基本的な使い方と、ループ処理を効率よく制御する方法について学びました。
break
文によってループの途中で処理を終了したり、continue
文によって特定の条件で次のループへスキップできるようになり、コードの柔軟性が大きく向上します。
これらの構文をマスターしたことで、無駄のないループ処理やエラー回避が実現でき、より実践的なプログラミングが可能になりました。
今後は、さらに複雑な条件分岐やネストされたループにも対応できる力を身につけていきましょう!
演習問題|breakとcontinueを使ってループを柔軟にコントロールしよう

PHPのfor
文と制御文break
、continue
を使い、条件に応じて繰り返しの挙動を変更するプログラムを作成しましょう。
このプログラムでは1から10までの数字を順に表示しますが、特定の条件で処理をスキップしたり、ループを終了する動作を実装します。
この問題の要件
以下の要件に従ってコードを完成させてください。
for
文を使用して1から10までの数字を繰り返し処理する。- 数字が
3
の場合、現在のループをスキップし、次のループに進む。 - 数字が
8
の場合、ループ全体を終了する。 - 各ループで現在の数字を表示する。
- スキップ時および終了時には、対応するメッセージを表示する。
ただし、以下のような実行結果となること。
現在の数字: 1 現在の数字: 2 数字3はスキップされました。 現在の数字: 4 現在の数字: 5 現在の数字: 6 現在の数字: 7 数字8でループを終了します。
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:for文を使用して変数$iを1から10まで繰り返す
□ if文で変数$iが3であるかを判定
□ □ 真の場合、「数字3はスキップされました。」を出力
□ □ continue文を使用してループの次の反復にスキップする
□ if文で変数$iが8であるかを判定
□ □ 真の場合、「数字8でループを終了します。」を出力
□ □ break文を使用してループを終了する
□ それ以外の場合、「現在の数字: $i」を出力する
- ヒント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; }
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
この問題の答え合わせ
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
<?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; }
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
for文の開始
for ($i = 1; $i <= 10; $i++) {
- for文は、指定した回数だけ処理を繰り返す制御構文です。
($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
は改行文字で、結果を見やすく整えます。