PHP入門 | 制御構文 | for文による複雑な繰り返し

繰り返し構文では、whileよりもforという構文がよく使われる。これは単純な条件設定だけでなく、初期化や繰り返し後の処理までまとめて設定できる構文である。

for (初期化処理; 条件; 繰り返し後の処理) {
    ...... 繰り返し処理 ......
}

中括弧の代わりにコロン(:)とendforを使うこともできる。

for (初期化処理; 条件; 繰り返し後の処理):
    ...... 繰り返し処理 ......
endfor;

このfor文では、次の括弧の中に3つの要素を記述する。

  • 1つ目は、繰り返しを開始する前に実行するもので、変数に値を代入したり、繰り返しの準備をしたりする。
  • 2つ目は繰り返し条件である。ここに書いた式や値がtrueであれば繰り返しを続ける。falseになると繰り返しを抜ける。
  • 3つ目は、繰り返し部分の処理を実行した後、次の繰り返しへ進む前に行う処理である。いわば「繰り返し後の処理」であり、主に繰り返しごとに変数の値を増減させるために使われる。

このfor文は記述する要素が多いため、実際に何度も書いて使い方に慣れてほしい。

以下の例を見てみよう。

<?php
    $total = 0;
    for($i = 1;$i <= 100;$i++){
        $total += $i;
    }
?>
<!DOCTYPE html>
<html lang="ko">
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
        <title>sample page</title>
    </head>
    <body>
        <h1>Hello PHP!</h1>
        <div>
            <?php echo "合計 : " . $total; ?>
        </div>
    </body>
</html>

これは先ほどのwhileサンプルを、forを使う形に書き直したものである。ここでは次のようにforを書いている。

for ($i = 1; $i <= 100; $i ++) {...... 中略 ......}

まず繰り返しに入る前に$i = 1を実行し、変数$iに1を代入しておく。そして$i <= 100がtrueである間、つまり$iが100以下である間は繰り返しを続ける。さらに繰り返しのたびに$i++を実行し、$iの値を1増やす。

このように変数$iが1から順に2、3……と増えながら繰り返しを続け、100を超えると繰り返しを抜けるようになっている。

forwhileより難しいが、これを使うと繰り返しのために余計な処理を書く必要がなくなり、スクリプトをすっきり書けるようになる。