スクリプトの中で、同じ処理を繰り返す「ループ」は単独で利用されたり、、次節の「条件分岐」 と併用して利用されることもあります。ループは 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]). " \n"; $a++; } ?>
while
構文の条件式は、変数$a
の値が4を超えたときにループから抜けるように設定されています。このスクリプトでは配列で定義された5つのインデックスのうち、4つまでを Webブラウザに出力しています。while
構文のサンプル (EUC-JPで記述)for
構文while
構文と同じ繰り返し処理を行いますが、式の内容が異なります。
for (初期値式; 条件式; 増減式) { 処理スクリプト }
JavaScript
の for
構文 とまったく同じ公式です。初期値式には、ループを繰り返す前に必ず1回だけ実行され、その値に基づいて条件式で評価され、その値が「true」
ならば、ブロック内の処理スクリプトを実行し、処理が終わったら増減式で初期値式の値を増やしたり減らしたりします。<?php for($a = 0; $a < 4; $a++) { $lectur = array("HTML","XHTML","XML","JavaScript","PHP"); print($lectur[$a]). " \n"; } ?>
for
構文では、初期値として変数$a
に、1をセットしています。条件式では、$a
が4を超えているかどうかを評価し、4以内であれば「true」
と判断して、処理のスクリプトを実行します。処理後、$a
の値に1を加えて、条件式を繰り返します。for
構文のサンプル (EUC-JPで記述)do 〜 while
構文while、for
構文は、式を最初に評価してから処理スクリプトを繰り返すループですが、do〜while
構文は、処理を最初に行ってから条件式を評価するという構文です。
do { 処理スクリプト } while(式);
<?php $a = 0; $lectur = array("HTML","XHTML","XML","JavaScript","PHP"); do { print($lectur[$a]). " \n"; $a++; } while($a < 4); ?>
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]). " \n"; if($a == 3) { print("ループを抜けます"); break; } } ?>