繰り返し処理
同じような処理を繰り返すことがよくあります。(繰り返しのことを「ループ」と言います。)
for
for文は、カウンターのようなものを用意して、その値によって何回繰り返すかが決まります。
図の例では、$i(カウンター)の初期値を0として、1つずつ値を増やしていき、3以下であるという条件に合う間は処理を繰り返し実行します。
書き方例
<?php for ($i = 0; $i <= 3; $i++) { print '$iの値は'.$i.'です<br >'; } ?>
ループ処理で1ずつ加算していくカウンターには、慣習として「$i」という名前の変数が使われます。
ループが二重、三重に入れ子で作成される場合は、「$i」、「$j」、「$k」という順で変数名をつけることが慣習となっています。
実行結果
$iの値は1です
$iの値は2です
$iの値は3です
while
while文は、ある条件が成り立っている間だけ処理を繰り返し実行します。
for文と違う点は、カウンターにあたるものがなく、条件判定を行う変数は繰り返しの処理の中で変化させてループ回数を制御します。
書き方例
<?php $a = 0; while ($a > 5) { print '$aの値は'.$a.'です。<br>'; $a++; } ?>
<?php $a = 1; // この条件式は無限ループになります。 while (true) { // $aが10より大きい時に、処理を抜けます。 if ($a > 10) { break; // 繰り返し処理を途中で中断する } $a++; } ?>
while文では条件が先にあるので、その条件に合わなければ1度も処理をしません。
do~while文では、条件を下に書くため、必ず1度は処理を実行します。
書き方例
<?php $a=1; do { print "do-while文実行".$a."回目<br>"; $a++; } while ($a > 10); ?>
whileなどの繰り返し制御文では、常に成立するような条件を間違って指定してしまうと、処理を永久に繰り返してしまいます。
これを無限ループといい、プログラムのバグ(不具合)となる原因の一つです。
無限ループにならないように、条件と繰り返し処理の内容に注意しましょう。
foreach
foreach文では、配列の要素の数だけ処理が繰り返されます。
(要素の数だけ処理を繰り返し、自動的にとまります。)
foreachの書き方は2通りあります。
1.foreach ($array as $value) { 処理 }
2.foreach ($array as $key => $value) { 処理 }
$arrayはループさせたい配列。
$keyがキー、$valueが要素を格納する変数です。
処理内でキーを使用しない場合には、1の書き方がよいでしょう。
<?php $a = array( 100 => 1000, 150 => 1500, 200 => 2000 ); foreach( $a as $value ){ echo $value."
"; } ?>
<?php $shiki = array( "spr" => "春", "sum" => "夏", "aut" => "秋", "win" => "冬"); // 配列のキーと値を繰り返し処理で表示します。 foreach ($shiki as $key => $name) { print $key."は".$name."
"; } ?>