この記事で学べる知識:繰り返しの制御
この記事の練習問題を解くために必要な知識:
比較演算子と論理演算子、if文による分岐処理、条件演算子、switch文による分岐処理、for文による繰り返し処理、while文による繰り返し処理、繰り返しの制御、エラーメッセージ、例外処理
<<前のページ | PHP記事一覧 |
次のページ>> |
PHPの「繰り返しの制御」とは
この章ではPHPにおける「繰り返しの制御」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。
繰り返し処理はプログラムで頻繁に利用されますが、繰り返しの途中で特定の条件で処理を中断したり、スキップしたりする場面がよくあります。
これを「繰り返しの制御」といい、PHPでは主に「break」と「continue」を使用します。
また、誤った条件設定による無限ループにも注意が必要です。
繰り返しの制御とは?
繰り返しの制御とは、ループ処理中に以下のような挙動を実現する仕組みです。
- break:現在のループを終了し、ループの外へ出る。
- continue:現在のループの残りの処理をスキップし、次のループへ進む。
- 無限ループ:終了条件が満たされず、永遠に続くループ。
これらを正しく理解することで、プログラムの意図した動作を効率よく実現できます。
「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
の処理をスキップしています。
まとめ
- 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:for文を使用して変数$iを1から10まで繰り返す
□ if文で変数$iが3であるかを判定
□ □ 真の場合、「数字3はスキップされました。」を出力
□ □ continue文を使用してループの次の反復にスキップする
□ if文で変数$iが8であるかを判定
□ □ 真の場合、「数字8でループを終了します。」を出力
□ □ break文を使用してループを終了する
□ それ以外の場合、「現在の数字: $i」を出力する
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
<?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
文を使った繰り返し処理の中で、条件に応じて制御文break
とcontinue
を使用する方法を学ぶものです。
以下にブロックごとに解説します。
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
は改行文字で、結果を見やすく整えます。
まとめ
このコードでは繰り返し処理の中でbreak
とcontinue
を使用し、条件に応じたループの制御方法を学びます。
- continue文: 特定の条件で現在のループをスキップして次のループに進みます。
- break文: 特定の条件でループを完全に終了します。
このプログラムを通じて、PHPの繰り返し処理における制御文の基本を学びました。
これらの制御文を使うことで、プログラムを柔軟に操作できるようになります。
繰り返し処理の応用を試してみて、さらなるスキルアップを目指しましょう!
<<前のページ |
PHP記事一覧 |
次のページ>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。