この記事で学べる知識:while文による繰り返し処理
この記事の練習問題を解くために必要な知識:
比較演算子と論理演算子、if文による分岐処理、条件演算子、switch文による分岐処理、for文による繰り返し処理、while文による繰り返し処理、繰り返しの制御、エラーメッセージ、例外処理
<<前のページ | PHP記事一覧 |
次のページ>> |
PHPの「while文による繰り返し処理」とは
この章ではPHPにおける「while文による繰り返し処理」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。
繰り返し処理はプログラムが一定の条件を満たしている間、同じコードを繰り返し実行するために使われます。
PHPでは、一つ前の記事で紹介したfor文のほかに、主に while文
とその変種である do-while文
を使用して繰り返し処理を記述します。
本記事ではこれら2つの文法の違いや使用方法を初心者向けに解説します。
while文とは
while文
は条件が真(true)の間、指定された処理を繰り返します。
条件が最初から偽(false)であれば、繰り返しは一度も実行されません。
while (条件) { // 繰り返し実行される処理 }
例えば、1から5までの数字を出力するコードは以下のように記述します。
<?php $counter = 1; // 初期値を設定 while ($counter <= 5) { echo "カウント: $counter" . PHP_EOL; // 現在のカウントを出力 $counter++; // カウントを1増やす }
$counter
が 5 以下である間はecho
文が繰り返し実行されます。PHP_EOL
は改行文字で、各出力が新しい行に表示されるようにします。$counter++
は$counter
の値を1増やします。この更新がなければ無限ループになります。
do-while文とは
do-while文
は条件が最初から偽でも、処理が少なくとも一度は実行される特徴を持ちます。
while文
と異なり、条件の評価が処理の後に行われます。
do { // 少なくとも一度は実行される処理 } while (条件);
例えば、条件が最初から偽の場合にどう動作するか示す例を以下に示します。
<?php $counter = 6; // 初期値が条件を超えている do { echo "カウント: $counter" . PHP_EOL; // 1回は実行される $counter++; } while ($counter <= 5);
$counter
が初期値で条件(5以下)を超えていても、do
ブロック内のコードが一度は実行されます。- 条件が偽の場合でも、1回の出力が行われる点が
while文
との違いです。
まとめ
while文
と do-while文
は、条件によって処理を繰り返す制御構文です。
それぞれの違いを理解することが、効率的なコードを書く第一歩です。
特にwhile文
は条件が真の場合のみ実行され、do-while文
は最低1回の実行が保証されます。
実際のプログラムでは、要件に応じて使い分けることが重要です。
while文による繰り返し処理の練習問題:カウント処理を繰り返すプログラムを作ろう
while文とdo-while文を使った繰り返し処理を学びましょう。
この問題では、カウンターを使って数字を順に表示するプログラムを作成します。
まず、while文を使って1から5までを表示し、次にdo-while文を使って6から10までを表示しましょう。
この問題の要件
以下の要件に従ってコードを完成させてください。
$count
という変数を宣言し、初期値を1に設定すること。- while文を使用して
$count
が5以下である間、以下を繰り返すこと:- 現在の
$count
の値を出力すること。 $count
の値を1増やすこと。
- 現在の
$count
の初期値を6に設定し直すこと。- do-while文を使用して
$count
が10以下である間、以下を繰り返すこと:- 現在の
$count
の値を出力すること。 $count
の値を1増やすこと。
- 現在の
ただし、以下のような実行結果となるコードを書くこと。
*****↓↓正解コードの実行結果の例↓↓*****
カウント: 1 カウント: 2 カウント: 3 カウント: 4 カウント: 5 (do-while)カウント: 6 (do-while)カウント: 7 (do-while)カウント: 8 (do-while)カウント: 9 (do-while)カウント: 10
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)
1:変数$countを初期化し、値1を代入
2:while文で$countが5以下の場合に繰り返し処理を実行
□ 「カウント: {現在の$countの値}」を改行付きで出力
□ $countの値を1増やす
3:改行を出力
4:変数$countに値6を代入
5:do-while文で$countが10以下の場合に繰り返し処理を実行
□ 「(do-while)カウント: {現在の$countの値}」を改行付きで出力
□ $countの値を1増やす
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
<?php $count = 1; // while文を用いて繰り返し処理を実行 /*【穴埋め問題1】 ここにwhile文を記述し、その中でカウンター変数を条件付きで繰り返し処理するコードを書いてください。 */ // do-while文を用いて繰り返し処理を実行 /*【穴埋め問題2】 ここにdo-while文を記述し、条件が満たされるまで処理を繰り返すコードを書いてください。 */
以上がこの問題の穴埋めコードです。
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の一つの正解例とそのコードの解説を以下に示します。
正解コードの例
例えば以下のようなプログラムが考えられます。
<?php // カウンター変数を初期化 $count = 1; // while文を用いて繰り返し処理を実行 while ($count <= 5) { // 現在のカウント値を出力 echo "カウント: $count" . PHP_EOL; // PHP_EOL は改行を表します // カウントを1ずつ増やす $count++; // この行がないと無限ループになるので注意 } echo PHP_EOL; // 出力の見やすさのための改行 // do-while文を用いて繰り返し処理を実行 $count = 6; // 条件を満たさない初期値を設定 do { // 現在のカウント値を出力 echo "(do-while)カウント: $count" . PHP_EOL; // カウントを1ずつ増やす $count++; } while ($count <= 10);
正解コードの解説
今回のコードでは、while文 と do-while文 を使用してカウンターを用いた繰り返し処理を行います。
コードをブロックごとに分解して、詳しく解説します。
PHPタグとカウンター変数の初期化
<?php // カウンター変数を初期化 $count = 1;
<?php
: PHPスクリプトの開始タグです。このタグ以降に書かれるコードがPHPとして実行されます。$count = 1;
: カウンター変数$count
を宣言し、初期値として1
を代入します。この変数は繰り返し処理の中で使用されます。
while文を用いた繰り返し処理
while ($count <= 5) { // 現在のカウント値を出力 echo "カウント: $count" . PHP_EOL; // PHP_EOL は改行を表します // カウントを1ずつ増やす $count++; // この行がないと無限ループになるので注意 }
while ($count <= 5)
: while文の条件式です。$count
が5
以下である限り、内部の処理が繰り返し実行されます。echo "カウント: $count" . PHP_EOL;
: 現在のカウンター値を出力します。PHP_EOL
は改行を表し、出力結果を見やすくします。$count++;
: カウンターを1増やします。この操作がないと条件が永遠に真となり、無限ループに陥ります。
改行とカウンターの再設定
echo PHP_EOL; // 出力の見やすさのための改行 $count = 6; // 条件を満たさない初期値を設定
echo PHP_EOL;
: 改行を追加して出力結果を見やすくします。$count = 6;
: カウンター変数$count
の値を6
に設定し直します。これにより、次のdo-while文
の条件を意図的に変更します。
do-while文を用いた繰り返し処理
do { // 現在のカウント値を出力 echo "(do-while)カウント: $count" . PHP_EOL; // カウントを1ずつ増やす $count++; } while ($count <= 10);
do { ... } while ($count <= 10);
: do-while文です。最初に必ず一度処理が実行され、その後条件が評価されます。echo "(do-while)カウント: $count" . PHP_EOL;
: 現在のカウント値を出力します。$count++;
: カウンターを1増やします。
まとめ
このコードではwhile文 と do-while文 の使い方を学びました。
while文は「条件を満たしている間」繰り返し処理を実行します。一方、do-while文は「条件にかかわらず最初の1回だけは実行される」点が特徴です。
これらの繰り返し処理を使いこなすことで、プログラムに柔軟な動きを持たせることができます。
初心者の方は、それぞれの構文の違いを理解し、必要に応じて使い分けられるよう練習してみましょう!
<<前のページ |
PHP記事一覧 |
次のページ>> |
この記事への質問・コメント
この記事を作成するにあたりAIを活用しています。
問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。