繰り返し処理

同じような処理を繰り返すことがよくあります。(繰り返しのことを「ループ」と言います。)

for

for文は、カウンターのようなものを用意して、その値によって何回繰り返すかが決まります。
図の例では、$i(カウンター)の初期値を0として、1つずつ値を増やしていき、3以下であるという条件に合う間は処理を繰り返し実行します。


書き方例
           <?php
                for ($i = 0; $i <= 3; $i++) {
                    print '$iの値は'.$i.'です<br >';
                }
            ?>
        

ループ処理で1ずつ加算していくカウンターには、慣習として「$i」という名前の変数が使われます。
ループが二重、三重に入れ子で作成される場合は、「$i」、「$j」、「$k」という順で変数名をつけることが慣習となっています。

実行結果
$iの値は0です
$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."
"; } ?>