Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP】while文の書き方と使い方の基本

PHPのwhile文の基本的な書き方から、処理を繰り返す仕組みを初心者向けに解説します。continue文で特定の処理をスキップし、break文でループを終了する方法、do-while文で最低1回実行する方法を学びます。偶数表示などの具体的なサンプルコードで、システムエンジニアが身につけるべきループ処理の基礎を習得できます。

作成日: 更新日:

開発環境

  • OS: Windows10
  • Editor: Visual Studio Code
  • PHP: 8.0以降

PHPのwhile文とは

PHPのwhile文は、特定の条件が真である間、指定された処理を繰り返し実行するための構文です。

この構文の重要な点は「条件が真である間」という部分です。プログラミングにおける「条件」とは、評価された結果が真(true)または偽(false)のどちらかになる式のことです。例えば、「ある変数の値が指定した数よりも小さい」といった比較式などが条件として使用されます。

while文は、まずこの条件を評価します。もし条件が真であれば、while文のブロック内に記述された処理が実行されます。処理が一度完了すると、再度条件が評価されます。この「条件の評価」と「処理の実行」のサイクルは、条件が真である限り繰り返されます。

そして、条件が偽になった時点で、while文による繰り返し処理は終了し、プログラムはwhile文の次の行へと進みます。

while文は、回数を指定するのではなく、ある状態が続く限り処理を実行したい場合や、外部からの情報(例えば、ユーザーからの入力)によって繰り返しを制御したい場合などに、非常に有効な構文として利用されます。

サンプルコード

php/chapter10/01.php

このコードは、while文の最も基本的な使い方を示しています。while文は、指定した「条件」が真(True)である間、繰り返し処理を実行する構文です。

解説

  1. $count = 0;
    • $countという変数に初期値として0を設定しています。これは、ループの開始地点を定義するものです。
  2. while ($count < 5)
    • これがwhile文の「条件」です。$countの値が5未満である限り、ループの中の処理が実行されます。
  3. echo "Count is: $count\n";
    • この行がループ内で繰り返し実行される処理です。現在の$countの値を画面に表示し、改行しています。
  4. $count++;
    • この行は、$countの値を1ずつ増やしています。この処理がないと$countは常に0のままで、$count < 5という条件がずっと真になり続け、ループが無限に繰り返されてしまうため、非常に重要です。

このコードを実行すると、Count is: 0から始まり、Count is: 4まで表示された後、$countが5になるため、$count < 5の条件が偽となり、ループが終了します。

01.php
1<?php
2// PHPのwhile文の書き方
3// while (条件) {
4//     // 条件が真である間、実行される文
5// }
6// 基本的なwhile文
7$count = 0;
8while ($count < 5) {
9    echo "Count is: $count\n";
10    $count++;
11}
12

php/chapter10/02.php

このコードでは、while文の中でcontinue文を使用する方法を示しています。continue文は、現在のループの残りの処理をスキップし、次のループの繰り返し(次の条件判定)に進むために使われます。

解説

  1. $count = 0;
    • $count変数を0で初期化しています。
  2. while ($count < 10)
    • $countが10未満である間、ループを繰り返します。
  3. if ($count % 2 === 0)
    • $countを2で割った余りが0であるか、つまり$countが偶数であるかを判定しています。
  4. $count++; (ifブロックの中)
    • もし$countが偶数であった場合、continueする前に$countをインクリメントしています。このインクリメントがないと、例えば$countが0のまま無限ループになってしまいますので注意が必要です。
  5. continue;
    • $countが偶数であれば、このcontinue文が実行され、これ以降のループ内の処理(echo文)はスキップされます。そして、すぐに次のwhile ($count < 10)の条件判定に戻ります。
  6. echo "Count is: $count\n";
    • $countが奇数の場合にのみ、この行が実行され、$countの値が表示されます。
  7. $count++; (ifブロックの外)
    • $countが奇数であった場合、echo文の後に$countがインクリメントされます。

このコードを実行すると、1、3、5、7、9といった奇数のみが表示されます。偶数の場合はcontinueによって表示処理がスキップされるためです。

02.php
1<?php
2// while文の中でのcontinueの使用
3$count = 0;
4while ($count < 10) {
5    if ($count % 2 === 0) {
6        $count++;
7        continue; // 処理をスキップする
8    }
9    echo "Count is: $count\n";
10    $count++;
11}
12

php/chapter10/03.php

このコードは、while文の中でbreak文を使用する方法を示しています。break文は、ループの実行を途中で完全に終了させ、ループの直後の処理に移行するために使われます。

解説

  1. $count = 0;
    • $count変数を0で初期化しています。
  2. while ($count < 10)
    • $countが10未満である間、ループを繰り返します。
  3. if ($count == 5)
    • $countが5に等しいかどうかを判定しています。
  4. break;
    • もし$countが5になった場合、このbreak文が実行されます。これにより、whileループは直ちに終了し、ループの後に続くコードがあれば、そちらの処理へ進みます。
  5. echo "Count is: $count\n";
    • $countが5になるまでは、この行が実行され、$countの値が表示されます。
  6. $count++;
    • $countの値を1ずつ増やしています。

このコードを実行すると、Count is: 0から始まり、Count is: 4まで表示されます。$countが5になった時点でbreakが実行されるため、Count is: 5は表示されず、ループもそこで終了します。

03.php
1<?php
2// while文の中でのbreakの使用
3$count = 0;
4while ($count < 10) {
5    if ($count == 5) {
6        break; // ループを終了
7    }
8    echo "Count is: $count\n";
9    $count++;
10}
11

php/chapter10/04.php

このコードは、do-while文の使用例です。while文と似ていますが、do-while文はループの「条件」が偽であったとしても、最低1回はループの中の処理が実行されるという特徴があります。

解説

  1. $number = 5;
    • $number変数を5で初期化しています。
  2. do { ... }
    • doブロック内の処理がまず最初に実行されます。この時点では条件はまだ判定されていません。
  3. echo "Number is: $number\n";
    • 現在の$numberの値を画面に表示し、改行しています。
  4. $number--;
    • $numberの値を1ずつ減らしています。
  5. while ($number > 0);
    • doブロック内の処理が1回実行された後、この条件が判定されます。$numberが0より大きい間は、再びdoブロック内の処理が実行されます。条件が偽になるとループは終了します。

例えば、もし最初から$number = 0;であったとしても、Number is: 0は最低1回表示されてから、条件($number > 0)が偽と判定され、ループは終了します。

このコードを実行すると、Number is: 5から始まり、Number is: 1まで表示されます。$numberが0になった時点で$number > 0の条件が偽となり、ループが終了します。

04.php
1<?php
2// do-while文
3// 最低1回はループが実行される保証があります。
4// 条件が後に評価されるため、条件がfalseでも一度は実行されます。
5$number = 5;
6do {
7    echo "Number is: $number\n";
8    $number--;
9} while ($number > 0);
10

php/chapter10/05.php

このコードは、while文と条件分岐(if文)を組み合わせて、指定された範囲内の偶数のみを表示する練習問題です。

解説

  1. $count = 1;
    • カウントの開始値を1に設定しています。
  2. while ($count <= 20)
    • $countが20以下の間、ループを繰り返します。これにより、1から20までの数を順番に処理できます。
  3. if ($count % 2 === 0)
    • 現在の$countの値が偶数であるか(2で割った余りが0になるか)を判定しています。
  4. echo "Even number: $count\n";
    • もし$countが偶数であれば、その値が画面に表示されます。
  5. $count++;
    • 次の数値に進むために、$countを1ずつ増やしています。この行はif文の外にあるため、$countが偶数か奇数かにかかわらず毎回実行されます。

このコードを実行すると、Even number: 2、Even number: 4といった形で、2から20までの偶数のみが順番に表示されます。

05.php
1<?php
2// 1から20までの数値のうち、偶数のみを表示する練習問題
3$count = 1;
4
5while ($count <= 20) {
6    if ($count % 2 === 0) {  // 偶数かどうかを確認
7        echo "Even number: $count\n";
8    }
9    $count++;  // カウントをインクリメント
10}
11

おわりに

本記事では、PHPにおけるwhile文の基本的な書き方と、条件が真である間処理を繰り返し実行する仕組みについて学びました。while文は、特定の条件が満たされるまで処理を続けたい場合に非常に有効な構文です。また、continue文でループ内の特定の処理をスキップし、break文でループを途中で完全に終了させる方法も理解できました。さらに、最低1回は必ず処理を実行するdo-while文についてもその特徴と使い方を習得しました。これらのループ処理の基礎は、システムエンジニアとして効率的なプログラムを記述するために不可欠なスキルとなります。

関連コンテンツ