while文

広告

繰り返し処理を行う方法としてwhile文について確認します。while文は指定した条件式が真(true)の間、繰り返し実行します。書式は次のようになっています。

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

条件式はif文と同じく比較演算子などを使って「x == 10」や「y > 15」などを記述します。そして条件式が真(TRUE)だった場合、ブロック内に記述された処理を実行します。そして改めて条件式を評価します。真(TRUE)であれば再度ブロック内の処理を実行し、偽(FALSE)ならばwhile文を終了します。

実行される処理が1つだけの場合はブロックを省略して次のように記述しても構いません。

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

ではwhile文がどのように実行されるのか確認していきます。次のような例で考えてみます。

$num = 0;

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

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

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

while文は条件式が偽(FALSE)にならない限り何度でもブロック内の処理を繰り返します。その為、ブロック内で条件式が変化するような処理を記述しなければ無限ループになってしまいます。

そこで例えば次のような使われ方をします。

$num = 0;

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

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

 1) 変数「num」に「0」を代入
 2) 条件式を評価。変数「num」は2より小さいのでブロック内の処理を実行
 3) 変数「num」の値を出力
 4) 変数「num」に代入されている値を1だけ加算。変数「num」は「1」が代入される
 5) ブロックの最後まで達したのでwhile文の先頭へ戻る
 6) 条件式を評価。変数「num」は2より小さいのでブロック内の処理を実行
 7) 変数「num」の値を出力
 8) 変数「num」に代入されている値を1だけ加算。変数「num」は「2」が代入される
 9) ブロックの最後まで達したので再度while文の先頭へ戻る
10) 条件式を評価。変数「num」は2より小さいくない為while文を終了

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

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

サンプルプログラム

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

sample1-1.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>PHPテスト</title>
</head>
<body>

<p>PHPのテストです。</p>

<p>
<?php
$num = 0;

while ($num < 3){
  print 'num = '.$num.'<br />';
  $num += 1;
}
?>
</p>

</body>
</html>

上記のファイルをWWWサーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。

while文

PHP入門の他の記事を見てみる

( Written by Tatsuo Ikura )