ループ

スクリプトの中で、同じ処理を繰り返す「ループ」は単独で利用されたり、、次節の「条件分岐」 と併用して利用されることもあります。ループは PHPスクリプト中で、非常に多く利用される「制御構文」の1つです。

ループ 〜 繰り返し処理
PHPでは、ループを構成する4種類の制御構文が用意されています。
while構文
ループを制御する最もシンプルな構文が「while」です。whileは、その繰り返しのコードを実行する前に条件式を評価し、その式が満たされればループを抜けます。同時に、その式が最初から満たさなければ、ループを実行することがありません。
以下は、while構文の基本的な形です。
  while (式) {
     処理スクリプト
 }
while構文は、if構文に似ており、式を評価してから、中カッコ[ 〜 ] のブロックを実行します。言い換えれば、式にある条件を満たすことができなければ、ループを実行させることができません。
<?php
    $a = 0;
    $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
      while($a < 4) {
        print($lectur[$a]). "&#160;\n";
        $a++;
      }
?>
この while構文の条件式は、変数$a の値が4を超えたときにループから抜けるように設定されています。このスクリプトでは配列で定義された5つのインデックスのうち、4つまでを Webブラウザに出力しています。
上記スクリプトの実行結果 → while構文のサンプル (EUC-JPで記述)
for構文
基本的には、while構文と同じ繰り返し処理を行いますが、式の内容が異なります。
  for (初期値式; 条件式; 増減式) {
     処理スクリプト
  }
この構文は、JavaScriptfor構文 とまったく同じ公式です。初期値式には、ループを繰り返す前に必ず1回だけ実行され、その値に基づいて条件式で評価され、その値が「true」ならば、ブロック内の処理スクリプトを実行し、処理が終わったら増減式で初期値式の値を増やしたり減らしたりします。
つまり、ループに入る前に初期値式を実行し、条件式で評価します。評価した値が条件に合えば処理を行い、増減式を実行してから条件式に戻ります。条件がマッチしない場合には、ループを実行しません。
<?php
    for($a = 0; $a < 4; $a++) {
    $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
        print($lectur[$a]). "&#160;\n";
      }
?>
この for構文では、初期値として変数$aに、1をセットしています。条件式では、$aが4を超えているかどうかを評価し、4以内であれば「true」と判断して、処理のスクリプトを実行します。処理後、$aの値に1を加えて、条件式を繰り返します。
上記スクリプトの実行結果 → for構文のサンプル (EUC-JPで記述)
do 〜 while構文
while、for構文は、式を最初に評価してから処理スクリプトを繰り返すループですが、do〜while構文は、処理を最初に行ってから条件式を評価するという構文です。
  do {
     処理スクリプト
  }
    while(式);
この構文では、処理スクリプトは条件に関わらず最低1回は実行されることを理解できることでしょう。最初に処理したい場合のループに向いた制御構文です。
<?php
   $a = 0;
   $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
     do {
      print($lectur[$a]). "&#160;\n";
      $a++;
     } while($a < 4);
?>
この PHPスクリプトでは、最初に初期値となる変数と配列を用意し、それを do文で解釈して実行しています。処理が終わったら変数の増減式地を設定します。
ここでは、初期値として設定された変数 $aに 1を加えています。その後、while文によって変数の値を評価します。
もし、このような増減式を設定しなければ、非常に危険な「無限ループ」に陥り、閲覧者のリソースを著しく損なう結果となりますので、do〜while構文を使う場合には、その点に十分注意してください。
上記スクリプトの実行結果 → do〜while構文のサンプル
foreach構文
foreach構文は、PHP4 から実装された比較的新しい制御構文です。このループ制御では、指定した配列の要素を1つづつ抜き取って処理します。
  foreach( 配列 as $key => $value) {
     処理スクリプト
  }
少し分かりづらいと思いますが、配列を設定する場合に、$keyによって設定されたキーワードと共に格納されるインデックスと、$valueに格納されるインデックスとグループ化します。例えば、
<?php
  $a = array("Apple" => "りんご", "Orange" => "みかん", 
             "Grape" => "ぶどう");
      foreach( $a as $key => $value) {
      print("$key は、$value<br>\n");
     }
?>
変数$aに格納された配列は、キーワードが「=>」によって2つの値を対にしてそれぞれを取り込んでいます。
foreach構文では、そのキーワードをもとにしてそれぞれの値を、変数$key、$valueにループしながら変換します。ループは、取り込まれたインデックスの数だけ行われます。
上記スクリプトの実行結果 → foreach構文のサンプル
break
ループを途中で抜けたい場合には、break文を使います。条件式だけでは指定できないループの脱出には便利な機能を持っています。
ただし、break文は、foreach 以外のループ制御構文に利用できます。foreach構文では不可となります。
<?php
    for($a = 0; $a < 4; $a++) {
    $lectur = array("HTML","XHTML","XML","JavaScript","PHP");
        print($lectur[$a]). "&#160;\n";
         if($a == 3) {
            print("ループを抜けます");
            break;
           }
      }
?>


This Page is HTML4.01 Valid! 最新更新日 2004年1月18日   最新更新日 2004年4月1日
Copyright(C) 2002〜2004 banban@scollabo.com