【PHP】Lesson2-6:while文による繰り返し処理を理解しよう

一つ前のレッスンでは for文による繰り返し処理 について学習しました。
今回は 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:クラス編
while文・do-while文の基本構文と違いを徹底解説
PHPで繰り返し処理を実現する「while文」と「do-while文」について、初心者向けにわかりやすく解説します。
本記事では、それぞれの構文や使い方、違いや注意点、実際のコード例まで丁寧に紹介。
while文とdo-while文を理解すれば、より柔軟なループ処理が書けるようになります。
ぜひ記事を最後まで読んで、PHPのループ構文を自分のスキルにしましょう!

while文とは何か?|基本構文と使用例をやさしく解説
while文 は条件がtrueである間、指定した処理を繰り返し実行する制御構文です。
この構文を使うことで同じコードを何度も記述する必要がなくなり、効率的なプログラムを書くことができます。
条件が最初から偽(false)であれば、繰り返しは一度も実行されません。
while文の基本構文は以下の通りです。
while (条件) { // 繰り返し実行される処理 }
例えば、1から5までの数字を出力するコードは以下のように記述します。
$counter = 1; // 初期値を設定 while ($counter <= 5) { // もし変数$counterが5以下なら echo "カウント: $counter" . PHP_EOL; // この処理を実行 $counter++; // 変数$counterに1を足し、次のループへ移行 }
$counter
が 5 以下である間はecho
文が繰り返し実行されます。$counter++
は$counter
の値を1増やすインクリメントです。この更新がなければ永遠に処理が終わらない 無限ループ になります。
do-while文の使い方|最低1回実行される仕組みを解説
do-while文
は while文
と異なり、条件の評価が処理の後に行われます。
そのため条件が最初から偽であっても、処理が少なくとも一度は実行される点が特徴です。
基本構文は以下の通りです。
do { // 少なくとも一度は実行される処理 } while (条件);
例えば、条件が最初から偽の場合にどう動作するか示す例を以下に示します。
<?php $counter = 6; // 初期値が条件を超えている do { echo "カウント: $counter" . PHP_EOL; // この処理を実行 $counter++; // 変数$counterに1を足し、条件判定に移行 } while ($counter <= 5); // もし変数$counterが5以下なら
$counter
が初期値で条件(5以下)を超えていても、do
ブロック内のコードが一度は実行されます。- 条件が偽の場合でも、1回の出力が行われる点が
while文
との違いです。
すなわち、このコードを実行すると以下のように出力されます。
6
まとめ|while文・do-while文の使い方と違いのポイント
この記事では、PHPのwhile文とdo-while文の基本構文や使い方、それぞれの違いについて学びました。
これにより、繰り返し処理の選択肢が広がり、目的に合わせた柔軟なループ制御ができるようになったはずです。
基礎を押さえた今こそ、実際に様々なループ処理にチャレンジし、PHPプログラミングの応用力を高めていきましょう!
演習問題|while文とdo-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【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:変数$countを初期化し、値1を代入
2:while文で$countが5以下の場合に繰り返し処理を実行
□ 「カウント: {現在の$countの値}」を改行付きで出力
□ $countの値を1増やす
3:改行を出力
4:変数$countに値6を代入
5:do-while文で$countが10以下の場合に繰り返し処理を実行
□ 「(do-while)カウント: {現在の$countの値}」を改行付きで出力
□ $countの値を1増やす
- ヒント2【穴埋め問題にする】
-
以下のコードをコピーし、コメントに従ってコードを完成させて下さい。
<?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);
- 正解コードの解説
-
コードをブロックごとに分割して解説します。
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増やします。