while文を使った繰り返し処理の方法

while 文は PHP の繰り返し処理を行う構文の一つで、条件式が TRUE である間、指定した処理を繰り返し実行します。ここでは PHP で while 文の使い方について解説します。

while文の使い方

while 文は繰り返し処理の一つで、条件式が TRUE の間、指定した処理を繰り返します。書式は次のようになっています。

while (条件式){
  実行する処理1;
  実行する処理2;
  ・・・
}

条件式に記述した式が TRUE を返すと、そのあとに記述されたブロック内の処理を順番に実行します。ブロックの最後まで処理を実行すると再び条件式を評価し、 TRUE だった場合は再びブロック内の処理を実行します。これを条件式が FALSE になるまで繰り返します。

ブロック内の処理の中で、条件式が何か変かするような処理が行われなければ、繰り返しが終わらずに無限にブロック内の処理を実行してしまいますのでご注意ください。詳しくはこのあとの例をご覧ください。

なお実行される処理が 1 つだけの場合はブロックを省略して次のように記述できます。

while (条件式)
  実行する処理;

では while 文がどのように実行されるのか簡単な例を使った確認します。

$num = 0;

while (num < 2){
  echo "num=".$num;
}

この時、次のように実行されます。

 1) 変数「num」に 0 を代入
 2) while 文を使った繰り返しを開始
 3) 条件式を評価。変数の値は 0 で 2 より小さいので条件式は TRUE
 4) ブロック内の処理を実行。変数の値を出力。
 5) ブロックの最後まで達したので while 文の先頭へ戻る
 6) 条件式を評価。変数の値は 0 で 2 より小さいので条件式は TRUE
 7) ブロック内の処理を実行。変数の値を出力。
 8) ブロックの最後まで達したので while 文の先頭へ戻る
 9) (6)から(8)を無限に繰り返し実行

while 文は条件式が FALSE にならない限り何度でもブロック内の処理を繰り返します。今回の例ではブロック内の処理を最後まで実行しても、条件式野中の変数の値が変化しないので、条件式はずっと TRUE のままで繰り返し処理が終わりません。

それでは先ほどの例を次のように変更しました。

$num = 0;

while (num < 2){
  echo "num=".$num;
  $num += 1;
}

この時、次のように実行されます。

 1) 変数「num」に 0 を代入
 2) while 文を使った繰り返しを開始
 3) 条件式を評価。変数の値は 0 で 2 より小さいので条件式は TRUE
 4) ブロック内の処理を実行。変数の値を出力。
 5) 変数の値に 1 を追加。
 6) ブロックの最後まで達したので while 文の先頭へ戻る
 7) 条件式を評価。変数の値は 1 で 2 より小さいので条件式は TRUE
 8) ブロック内の処理を実行。変数の値を出力。
 9) 変数の値に 1 を追加。
 10) ブロックの最後まで達したので while 文の先頭へ戻る
 11) 条件式を評価。変数の値は 2 で 2 より小さくないので条件式は FALSE
 12) 繰り返し処理が終了

今度はブロック内の処理で、条件式で使われている変数の値を変化させています。このため、ある回数だけ繰り返し処理が行われると条件式が FALSE となり while 文が終了されます。

while 文は繰り返し回数が決まっていない場合に便利です。ただし無限ループとならないように十分気をつける必要があります。

サンプルコード

では簡単なプログラムで試してみます。

<?php
$num = 1;

while ($num < 100){
  echo "num = ".$num."\n";
  $num *= 2;
}

作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。

php sample.php

while文の使い方

変数の値が 100 よりも小さい間は繰り返し処理を行います。繰り返し処理が行われる毎に変数の値を 2 倍しました。

while文の中でwhile文を使う

while 文で繰り返し実行される処理の中に、別の while 文を記述することができます。例えば次のように記述します。

while (条件式1){
  実行する処理1-1;
  実行する処理1-2;

  while (条件式2){
    実行する処理2-1;
  }
}

外側の while 文の条件式が TRUE だった場合に、ブロック内の処理が実行されます。実行する処理の一つとして内側に記述された while 文が実行されます。内側の条件式が FALSE になるまで繰り返されたあと、再び内側の while 文の条件式が評価されます。

例えば次のような使い方をします。

$num1 = 1;

while ($num1 < 5){
  $num2 = 1;

  while ($num2 < 5){
    echo $num1*$num2."\n";
    $num2 += 1;
  }

  $num1 += 1;
}

この場合では外側の while 文の繰り返し処理が 1 回実行されるたびに内側の while 文の繰り返し処理が 4 回実行されます。外側の繰り返し処理は 4 回実行されますので、よって内側の繰り返し処理は合計 16 回実行されることになります。

サンプルコード

では簡単なプログラムで試してみます。

<?php
$num1 = 1;

while ($num1 < 5){
  $num2 = 1;

  while ($num2 < 5){
    echo $num1."*".$num2."=".$num1*$num2."\n";
    $num2 += 1;
  }

  $num1 += 1;
}

作成したプログラムを sample.php として保存しました。その後でコマンドプロンプトを起動し、次のように実行しました。

php sample.php

while文の使い方

外側の繰り返し処理は変数の値が 5 よりも小さい間繰り返します。そして内側の繰り返し処理も変数の値が 5 よりも小さい間繰り返します。

-- --

PHP で while 文の使い方について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。