PHPの全目次
繰り返し処理の目次
- while文
- while文をネスト
- break
- continue
- do..while文
- for文
- for文で複数の変数を変化させる
- foreach文
- foreach文でキーと値を取り出す
- foreach文で配列要素の値を変更する
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文は繰り返し回数が決まっていない場合に有効な構文です。ただし無限ループとならないように十分気をつける必要があります。
サンプルコード
▼Example-again1-1.php
<!DOCTYPE html><html 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サーバのドキュメントルート以下に設置しブラウザからアクセスすると次のように表示されます。