【PHP】while文

Image

while文は繰り返し処理を制御する構文です。
繰り返し処理とは条件が真(TRUE)の間同じ処理を繰り返し行うことを指します。
while文の書式は以下の通りです。

while(条件){
  条件が満たされている間実行する処理
}

条件にはif文と同じく比較演算子や論理演算子等を記述します。
例えば、変数の値が10になるまで繰り返し処理を実行したい場合は以下のように記述します。

<?php

  $num = 0;

  // $numが10以下の間
  while($num <= 10){

  // $numの値を出力
  echo '$num = '.$num.'<br />';
  // $numに1を加算
  $num++;
  }

?>


Demo

上記サンプルのデモを用意しました。
流れとしたは以下のようになっています。

  • 条件の真偽を判断($numが10以下であるか)
  • 真(TRUE)であれば
    • $numの値を出力
    • $numに1を加算
    • 最初(条件)へ戻る
  • 偽(FALSE)であれば次の処理へ

以上のように$numが10より大きい値の場合、while文は実行されずに次の処理へ移動します。
試しに$numに11を代入してみましょう。

<?php

  $num = 11;

  // $numが10以下の間
  while($num <= 10){

  // $numの値を出力
  echo '$num = '.$num.'<br />';
  // $numに1を加算
  $num++;
  }

?>


Demo

デモから確認できるように何も出力されずに処理が終了します。
条件が満たされなかった(FALSE)為、while文が一度も実行されなかったのがお分かりいただけたのではないでしょうか。

続いてwhile文のもう一つの形であるdo-while文をご紹介します。

do-while文

do-while文の考え方は、条件の真偽に関わらず一度は処理を実行しようというものです。
while文では繰り返し処理に入る前に条件の判断が行われました。
do-while文は先に処理を実行して最後に条件を判断します。

do-while文の書式は以下の通りです。

do{
  実行する処理
  (初回は必ず実行、2回目から条件判断後)
}while(条件);

ではwhile文の最後に掲載したサンプルと同じ処理をdo-while文で実行してみます。

<?php

  $num = 11;

  do{
  // $numの値を出力
  echo '$num = '.$num.'<br />';
  // $numに1を加算
  $num++;

  // $numが10以下の間
  }while($num <= 10);

?>


Demo

while文では$numが10より大きい値であれば処理は一度も実行されずに終了しました。
do-while文では設定された条件に関わらず一度実行されます。

先に条件を判断したい場合はwhile文。
後に条件を判断したい場合はdo-while文。

以上の事を覚えておきましょう。