反復条件

反復条件の指定には比較演算子を使うことが多いです。いくつかサンプルを見てみましょう。次のプログラム(loop3.php)を作成します。

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

条件式$i <= 1は、変数$i1以下の場合を意味します。プログラムを実行すると次のように出力されます。

$ php loop3.php
1

それでは次のプログラムはどうでしょうか。さきほどのプログラム(loop3.php)の条件式を次のように修正してみましょう。

<?php
$i = 1;
while ($i > 5) {
  echo $i . PHP_EOL;
  $i++;
}

条件式$i > 5は、変数$i5より大きい場合を意味します。変数$iの初期値は1ですので実行すると次のようになります。

$ php loop3.php

反復処理が一度も実行されないので、上記のように何も出力されないようになります。

もう一つプログラムを見てみましょう。さきほどのプログラム(loop3.php)の条件式を次のように修正してみましょう。

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

ここでは条件式にtrueを指定しています。少し違和感があるかもしれませんが、これも文法としては成立しています。これまで条件式に<<=といった比較演算子を使う例を示してきましたが、比較演算子の評価結果は必ず論理型データ(true / false)になります。つまりwhile文の条件式の正体は論理型データです。

さきほどのプログラム(loop3.php)を実行すると次のような実行結果となります。

$ php loop3.php
1
2
3
...無限に繰り返す

ターミナルでcrrlキーとcキーを同時に押すとプログラムは停止します。

反復構造では条件式の作り方次第で、今回のようにプログラムが無限にループしてしまうこともあります。


前へ | 次へ