PHP - BASIC - 5. PHPの反復構造 - 1. while文

反復構造の 1 つである while 文を見ていきましょう。次のプログラムは 1〜3 までの数値を出力するものです。次のプログラム( loop1.php )を作成してみましょう。

<?php
$i = 0;
while ($i < 3) {
  echo $i . PHP_EOL;
  $i++;
}

まずは作成したプログラムを実行してみましょう。ターミナルから次のように実行します。

$ php loop1.php
0
1
2

while 文は反復構造を定義する構文です。

while (条件式) {
  // 条件が成立した場合に実行する処理
}

上記のように () の中に反復条件を示す条件式を記述し、 {} の中に条件式が成立した場合に実行する処理を記述します。

さきほどのプログラム( loop1.php )の場合、条件式は $i < 4 となっています。これは「変数 $i4 より小さいか」という条件式を定義しています。変数 $i の初期値は 0 を代入しているので、繰り返し処理の初回は条件式が成立する(条件式の評価結果が true )ことになります。

while 文の条件式には値の大小を比較する >< といった比較演算子を使うことが多いです。

条件式が成立した場合 {} の中に記述した処理が実行されます。さきほどのプログラム( loop1.php )の場合、以下のように記述しています。

while ($i < 4) {
  echo $i . PHP_EOL; 
  $i++; 
}

{} の中ではまず echo $i . PHP_EOL; が実行されるので、変数 $i の内容が改行コード( PHP_EOL )とともに出力されます。続いて $i++; が実行されるので変数 $i のデータがインクリメント( 1 増加)されます。 $i++; の処理を終えると while 文の処理ブロックの終端である } に到達します。処理が } に到達すると、再び、 while 文の条件式の比較( $i < 4 )に戻ります。この時点で変数 $i2 となっていますが、変わらず条件式 $i < 4 は成立するので再度、 {} の中の処理を実行することになります。

$i $i < 4 反復処理
0 true 0を出力する
$iをインクリメントする
1 true 1を出力する
$iをインクリメントする
2 true 2出力する
$iをインクリメントする
3 false 反復処理を終了する

まとめ

  • while文は反復構造(繰り返し)を定義する
  • while文の条件式 () には比較演算子( < など)を使うことが多い
  • while文の {} の中に記述した処理が繰り返し実行される