for ループは、PHP で最も複雑なループです。 for は、C の for ループと同様に動作します。 forループの構文は、次のようになります。
1 2 for (式1; 式2; 式3) 文 3 |
最初の式(式1)は、ループ開始時に無条件に 評価(実行)されます。
各繰り返しの開始時に、式2が評価されます。 その式の値がTRUEが場合、ループは継続され、括弧内の文が 実行されます。 値が FALSEの場合、ループの実行は終了します。
各繰り返しの後、式3が評価(実行)されます。
各式は、空とすることができます。式2を空にすることは、 無限実行ループを意味します。(PHP は、この状態を C のように暗黙の内に TRUEとみなします) for 論理式を使用するよりも条件付 break 文によりループを終了させたいと 考える傾向がある場合には、この機能は思ったほど便利ではないかもしれません。
次の例について考えてみましょう。全ての例は、1~10までの数を 表示します。
1 2 /* 例 1 */ 3 4 for ($i = 1; $i <= 10; $i++) { 5 print $i; 6 } 7 8 /* 例 2 */ 9 10 for ($i = 1;;$i++) { 11 if ($i > 10) { 12 break; 13 } 14 print $i; 15 } 16 17 /* 例 3 */ 18 19 $i = 1; 20 for (;;) { 21 if ($i > 10) { 22 break; 23 } 24 print $i; 25 $i++; 26 } 27 28 /* 例 4 */ 29 30 for ($i = 1; $i <= 10; print $i, $i++) ; 31 |
もちろん、最初の例(もしくは 4番目の例)が最善であると考えられます。 しかし、forループにおいて空の式を使用できると、多くの場合、 便利だということに気づかれるかと思います。
PHP は、forループ用に "コロン構文" もサポートします。
1 2 for (式1; 式2; 式3): 文; ...; endfor; 3 |
他の言語には、配列やハッシュを連続的に処理するために foreach文があります。PHP3 にはこうした 構文はありません。PHP4 はこれをサポートしています。 (foreachを参照下さい) PHP3 では、同様の効果を得るために while文を list() および each() と組み合わせて使用します。 例については、これらの関数の�キュメントを参照下さい。