PHPのwhile文とdo-while文を徹底解説!条件が満たされるまで繰り返す処理の書き方
生徒
「PHPで、条件が満たされるまで同じ処理を繰り返す方法はありますか?」
先生
「PHPでは、while文やdo-while文を使うと、条件に合わせて繰り返し処理を書くことができます。」
生徒
「for文とは何が違うんですか?」
先生
「for文は回数が決まっている繰り返しで使いやすく、while文は条件が続く間だけ繰り返したいときに使いやすいです。」
生徒
「do-while文というものもあるんですね。」
先生
「はい。do-while文は、最初に一回だけ処理を実行してから条件を確認する書き方です。順番に見ていきましょう。」
1. PHPのwhile文とは?
PHPのwhile文は、条件が成り立っている間、同じ処理を繰り返すための制御構造です。制御構造とは、プログラムの流れを決める仕組みのことです。PHPのプログラムは上から順番に実行されますが、条件分岐や繰り返し処理を使うことで、必要な処理を何度も実行したり、条件に合わせて処理の流れを変えたりできます。
プログラミング未経験の方は、while文を「条件が合っている間だけ続ける作業」と考えるとわかりやすいです。たとえば、コップに水を入れる場面を想像してください。コップがいっぱいになるまで水を入れ続けます。いっぱいになったら止めます。この「いっぱいになるまで続ける」という考え方が、PHPのwhile文に近いです。
PHPのwhile文は、繰り返す回数がはっきり決まっていない場合に便利です。たとえば、在庫がなくなるまで処理する、条件に合うデータが見つかるまで探す、入力された値が正しくなるまで確認する、といった処理で使われます。PHP初心者がループ処理を学ぶときには、for文だけでなくwhile文の考え方も理解しておくことが大切です。
2. while文の基本的な書き方
while文は、まず条件を確認し、その条件が真であれば中の処理を実行します。真とは、条件が成り立っているという意味です。反対に、条件が成り立っていない場合は偽といいます。PHPのwhile文では、条件が真の間だけ処理が繰り返され、条件が偽になった時点でループが終わります。
基本の形は、whileの後ろに条件を書き、波かっこの中に繰り返したい処理を書きます。次の例では、数字を一から五まで順番に表示しています。
$count = 1;
while ($count <= 5) {
echo $count . "回目です\n";
$count++;
}
1回目です
2回目です
3回目です
4回目です
5回目です
このプログラムでは、最初に変数$countへ一を入れています。while文の条件は$count <= 5なので、数字が五以下の間は処理が繰り返されます。中の処理では数字を表示し、最後に$count++で数字を一つ増やしています。
$count++は、変数の値を一つ増やす書き方です。この処理がないと、$countの値がずっと一のままになり、条件がいつまでも真のままになります。その結果、同じ処理が終わらずに繰り返される無限ループになる可能性があります。
3. while文の流れを初心者向けに理解する
while文を理解するときは、処理の順番を一つずつ追いかけることが大切です。PHPはまず条件を確認します。条件が成り立っていれば、波かっこの中の処理を実行します。処理が終わると、もう一度条件を確認します。そして条件が成り立っていれば、また処理を実行します。この流れを、条件が成り立たなくなるまで繰り返します。
つまり、while文は「確認する、実行する、また確認する」という流れで動きます。これは、料理中に鍋の中を見ながら、まだ煮えていなければもう少し加熱する動きに似ています。煮えているか確認し、まだなら続ける。煮えたら止める。このように考えると、PHPのwhile文の動きが自然に理解できます。
| 順番 | 処理内容 | 考え方 |
|---|---|---|
| 一 | 条件を確認する | 繰り返してよいか調べる |
| 二 | 条件が真なら処理する | 条件に合っているので実行する |
| 三 | 変数の値を変える | 次の確認に進める |
| 四 | もう一度条件を確認する | 続けるか終わるか判断する |
PHPのwhile文で大切なのは、条件がいつか偽になるように書くことです。繰り返しの中で変数の値を変えたり、処理の状態を変えたりしないと、いつまでも条件が変わらず、プログラムが終わらなくなります。初心者の方は、while文を書くときに「この条件はいつ終わるのか」を必ず確認しましょう。
4. 条件が満たされるまで繰り返す処理の例
while文は、条件が満たされるまで繰り返したい処理に向いています。たとえば、合計金額が一定の金額になるまで足していく処理を考えてみましょう。買い物かごに商品を入れていき、合計が決められた金額以上になったら止めるようなイメージです。
次の例では、合計が十以上になるまで、二ずつ足しています。条件を見ながら処理を続けるため、while文の特徴がわかりやすい例です。
$total = 0;
while ($total < 10) {
$total += 2;
echo "現在の合計は" . $total . "です\n";
}
現在の合計は2です
現在の合計は4です
現在の合計は6です
現在の合計は8です
現在の合計は10です
$total += 2は、現在の合計に二を足すという意味です。最初は合計がゼロなので条件に合っています。処理を繰り返すたびに合計が増えていき、十になった時点で次の条件確認では$total < 10が成り立たなくなります。そのため、while文の繰り返しが終了します。
このように、PHPのwhile文は、回数よりも条件を中心に考えたいときに便利です。回数を決めて繰り返すfor文とは違い、条件が変わるまで続ける処理に向いています。
5. do-while文とは?必ず一回は実行する繰り返し
PHPのdo-while文は、while文と同じく条件を使って繰り返す処理です。ただし、大きな違いがあります。while文は最初に条件を確認しますが、do-while文は先に処理を一回実行してから条件を確認します。そのため、条件が最初から成り立っていない場合でも、do-while文の中の処理は必ず一回は実行されます。
身近な例でいうと、試食を一口してから買うかどうか考えるようなものです。まず一回試して、その後で続けるかどうか判断します。PHPのdo-while文も、最初に一回処理し、その後に条件を見て続けるか終わるかを決めます。
do-while文は、画面に一度メッセージを出したい場合や、最初の一回は必ず処理したい場合に使いやすい書き方です。PHP初心者の方は、while文との違いを「条件を先に見るか、後で見るか」と覚えると理解しやすくなります。
$count = 1;
do {
echo $count . "回目です\n";
$count++;
} while ($count <= 3);
1回目です
2回目です
3回目です
この例では、まずdoの中の処理が実行されます。その後、$count <= 3という条件を確認し、条件が真であれば繰り返します。do-while文では、最後にセミコロンを書く点にも注意しましょう。
6. while文とdo-while文の違い
while文とdo-while文は、どちらもPHPの繰り返し処理で使います。しかし、処理を実行する前に条件を確認するか、処理を実行した後に条件を確認するかが違います。この違いによって、最初の一回が実行されるかどうかが変わります。
while文は、条件が最初から偽の場合、処理は一度も実行されません。一方でdo-while文は、条件が最初から偽でも、処理が一度は実行されます。この違いは、PHPのループ処理を正しく使い分けるうえでとても重要です。
$count = 10;
while ($count <= 3) {
echo "while文です\n";
}
do {
echo "do-while文です\n";
} while ($count <= 3);
do-while文です
この例では、$countが十なので、$count <= 3という条件は最初から成り立っていません。そのため、while文の中は実行されません。しかし、do-while文は先に処理を実行してから条件を見るため、一回だけ表示されます。
| 書き方 | 条件確認のタイミング | 最初の一回 |
|---|---|---|
while文 |
処理の前 | 条件が偽なら実行されない |
do-while文 |
処理の後 | 条件が偽でも一回は実行される |
PHPでwhile文とdo-while文を使い分けるときは、最初に一回処理したいかどうかを考えると判断しやすくなります。最初から条件を確認したい場合はwhile文、まず一回処理を実行したい場合はdo-while文が向いています。
7. 無限ループに注意する
PHPのwhile文を使うときに、初心者が特に注意したいのが無限ループです。無限ループとは、繰り返し処理が終わらず、ずっと同じ処理を続けてしまう状態のことです。条件がいつまでも真のままだと、PHPは処理を止めるタイミングを失ってしまいます。
たとえば、数字を一つずつ増やす予定なのに、増やす処理を書き忘れると、条件が変わらず繰り返しが終わりません。これは、時計のアラームを止め忘れて鳴り続けるような状態です。PHPの学習では、while文を書くたびに、条件がどこで変わるかを確認することが大切です。
$count = 1;
while ($count <= 3) {
echo $count . "回目です\n";
$count++;
}
1回目です
2回目です
3回目です
この例では、ループの中で$count++を書いているため、繰り返すたびに数字が増えていきます。その結果、条件がいつか偽になり、while文が終了します。もし$count++を書き忘れると、$countは一のまま変わらず、条件がずっと真になってしまいます。
PHPのループ処理では、条件を作ることと同じくらい、条件を変化させる処理が重要です。特にwhile文は条件を中心に繰り返すため、変数の更新を忘れないようにしましょう。
8. breakを使ってwhile文を途中で止める
while文は条件が真の間は繰り返しを続けますが、途中で特定の条件になったら処理を止めたい場合があります。そのようなときは、breakを使います。breakとは、ループ処理を途中で中断して、ループの外へ抜けるための命令です。
たとえば、数字を順番に確認していて、目的の数字が見つかったら、それ以上続ける必要はありません。探し物が見つかったら探すのをやめるのと同じです。PHPのwhile文でも、条件に合ったらbreakで処理を終わらせることができます。
$count = 1;
while ($count <= 10) {
if ($count == 4) {
break;
}
echo $count . "を確認しました\n";
$count++;
}
1を確認しました
2を確認しました
3を確認しました
この例では、$countが四になったときにbreakが実行されます。そのため、四以降の表示は行われません。PHPのwhile文とif文を組み合わせることで、条件が満たされたタイミングで繰り返し処理を中断できます。
while文、do-while文、if文、breakは、PHPの制御構造を理解するうえでつながりのある知識です。条件を見ながら繰り返し、必要になったら止めるという考え方を覚えると、実際のPHPプログラムも読みやすくなります。
9. PHP開発でwhile文とdo-while文を使う場面
PHPのwhile文は、データがある間だけ処理したい場合や、条件が満たされるまで繰り返したい場合に使われます。たとえば、データベースから取得した情報を一件ずつ処理する、ファイルを一行ずつ読み込む、指定した条件に合うまで計算を続ける、といった場面です。Webアプリケーション開発では、一覧表示や検索処理などで繰り返しの考え方がよく使われます。
do-while文は、最初の一回だけは必ず処理したい場面に向いています。たとえば、最初にメッセージを表示してから条件を確認する処理や、一度処理を行った結果を見て続けるか判断する処理などです。ただし、実務ではwhile文やforeach文の方が登場する機会は多いため、まずはwhile文の基本をしっかり理解し、そのうえでdo-while文の特徴を覚えるとよいでしょう。
PHP初心者がwhile文とdo-while文を学ぶときは、条件、繰り返し、変数の更新という三つをセットで考えることが大切です。条件は続けるかどうかの判断、繰り返しは実行する処理、変数の更新はいつか終わるための変化です。この三つがそろうことで、安全で読みやすいPHPのループ処理になります。
$number = 1;
do {
echo "現在の番号は" . $number . "です\n";
$number++;
} while ($number <= 2);
現在の番号は1です
現在の番号は2です
このように、PHPのwhile文とdo-while文は、条件に合わせて処理を繰り返すための基本的な書き方です。回数が決まっている処理だけでなく、条件が満たされるまで続ける処理を作れるようになると、PHPの制御構造への理解が深まります。プログラミング未経験の方でも、まずは短いサンプルを見ながら、条件がどのタイミングで確認され、変数がどのように変わっていくのかを追いかけることで、while文とdo-while文の使い方を少しずつ理解できます。