>>この記事には書き直した新しいページがあります。<<
<<前 [TOP] 次>>
PHPで、繰り返しの制御のひとつとしてforが用意されています。
for (初期設定式; 条件式; カウンタ式) { 処理; }
「初期設定式」でループ(繰り返し)の始まりが指定され、「条件式」が満たされている間、「処理」を実行します。
forの場合もifと同様に「条件式」にあてはまったときに実行される「処理」が1つのときに限り、「処理」の前後に{ }はなくてもかまいません。
以下のPHPプログラムをテキストエディタで作成して「phpsample」フォルダに保存して下さい。
【make-checkbox.php】
<p>チェックボックスをforでつくる</p> <?php $var=array("apple", "banana", "orange"); $fruits=array("りんご", "バナナ", "オレンジ"); for ($i=0; $i<count($var); $i++) { print("<input type=\"checkbox\" name=\"${var[$i]}\">${fruits[$i]}<br>\n"); } ?>
関数count()は、引数の配列にいくつの要素があるかを返します。
もし、引数に単なる変数を指定した場合、その変数が存在していれば「1」を返します。
Apacheを起動し、Webブラウザで「http://localhost/phpsample/make-checkbox.php」にアクセスして実行結果を確認してください。
PHPで配列の要素にアクセスする場合は、先のforよりもforeachを使用した方が便利です。
次の書式は単純に配列から値を取り出すときに使用します。
foreach (配列 as 値を格納する変数) { 処理; }
次の書式は配列のインデックスと値を取り出すときに使用します。
foreach (配列 as インデックス(添字)を格納する変数 => 値を格納する変数) {
処理;
}
以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。
【make-checkbox2.php】
<p>チェックボックスをforeachでつくる</p> <?php $fruits=array('apple'=>"りんご", 'banana'=>"バナナ", 'orange'=>"オレンジ"); foreach ($fruits as $val) { print("${val}<br>\n"); } foreach ($fruits as $index => $val) { print("<input type=\"checkbox\" name=\"${index}\">${val}<br>\n"); } ?>
Webブラウザで「http://localhost/phpsample/make-checkbox2.php」にアクセスして実行結果を確認してください。
PHPではfor,foreachの他に、while/do-whileといった構文でも繰り返しの制御ができます。
whileは条件式が真の場合に処理を実行します。
while ( 条件式 ) { 処理; }
do-whileも条件式が真の場合に処理を実行します。
whileとの違いは、最低1度は処理が実行される点です。
do { 処理; } while ( 条件式 );
以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。
【whiletest.php】
<p>whileとdo-whileの違い</p> <?php $val=1; //実行されない while ($val > 2) { print("${val}回 while()を実行<br>\n"); $val++; } $val=1; //doのみ実行される do { print("${val}回 do-while()を実行<br>\n"); } while ($val > 2) ; ?>
while(){}の方は1番始めの条件チェックで偽となるので一度もwhile内の処理は行われません。
do-while()は、条件が偽でも1度は処理が行われます。
Webブラウザで「http://localhost/phpsample/whiletest.php」にアクセスして実行結果を確認してください。
繰り返しの制御構造を途中で抜けるにはbreakを使用します。
繰り返しの処理の途中でループの最初に戻るにはcontinueを用います。
breakやcontinueは、何ブロック抜けるかを記述できます。
例えば二重ループで単に「break;」と書けば、内側のループを抜けるだけですが、「break 2;」とすれば、すべてのループを抜けることになります。
以下のPHPプログラムをメモ帳で作成して、「phpsample」フォルダに保存して下さい。
【breaktest.php】
<p>breakとcontinue</p> <?php print("break;を使用<br>\n"); for ($i=0; $i<5; $i++) { for ($j=10; $j<50; $j+=10) { if ($j == 20) { break; } print("\$i=${i}, \$j=${j}<br>\n"); } } print("<br>break 2;を使用<br>\n"); for ($i=0; $i<5; $i++) { for ($j=10; $j<50; $j+=10) { if ($j == 20) { break 2; } print("\$i=${i}, \$j=${j}<br>\n"); } } print("<br>continue;を使用<br>\n"); for ($i=0; $i<5; $i++) { for ($j=10; $j<50; $j+=10) { if ($j == 20) { continue; } print("\$i=${i}, \$j=${j}<br>\n"); } } print("<br>continue 2;を使用<br>\n"); for ($i=0; $i<5; $i++) { for ($j=10; $j<50; $j+=10) { if ($j == 20) { continue 2; } print("\$i=${i}, \$j=${j}<br>\n"); } } ?>
Webブラウザで「http://localhost/phpsample/breaktest.php」にアクセスして実行結果を確認してください。
<<前 [TOP] 次>>