PHP:繰り返し

PHPのfor文などの繰り返し処理について学習した内容をまとめています。

同じような処理を繰り返すことが出来れば、コード量が少なくなり、かつ、変数と組み合わせることでより複雑な処理を行えるようになります。

for文

for文を使用することで、同じ処理を何度も繰り返し実行することができるようになる。

一行だけ処理を繰り返す場合は以下のように記述できる。

    // 構文
    for (初期化式; 条件式; 変化式)
        //繰り返される処理;

初期化式では、処理を繰り返す際に使用するカウンタの初期値を設定する。

条件式では、どれだけ繰り返しを行うのかを判断する条件を設定する。

変化式では、カウンタの値について増減のどちらなのかを指定する。

また、実行する処理が複数の場合には以下のように記述できる。

    // 構文
    for (初期化式; 条件式; 変化式) {
        //繰り返される処理1;
        //繰り返される処理2;
    }

使用してみる。

    <?php
    for ($i = 0; $i < 3; $i++) {
        print "{$i}回目の処理です。<br>";
    }
    //
    //結果
    // 0回目の処理です。
    // 1回目の処理です。
    // 2回目の処理です。
    //
    ?>

別の記述方法もある。

    // 構文
    for (初期化式; 条件式; 変化式) :
        //繰り返される処理1;
        //繰り返される処理2;
    endfor;

目次へ

while文

for文同様に、同じ処理を繰り返すことのできる繰り返し文の一つ。

while文は条件がtrueである限り同じ処理を何度でも繰り返す。

条件がfalseにならなければ簡単に無限ループしてしまうため注意が必要。何度泣かされたことか・・・笑

    // 構文
    while (条件) {
        //繰り返される処理1;
        //繰り返される処理2;
    }

使用してみる。

    <?php
    $i = 0;

    while ($i < 3) {
        print "{$i}回目の処理です。<br>";
        $i++; //インクリメントを忘れると、無限ループが・・・
    }
    //
    //結果
    // 0回目の処理です。
    // 1回目の処理です。
    // 2回目の処理です。
    //
    ?>

別の記述方法もある。

    // 構文
    while (条件) :
        //繰り返される処理1;
        //繰り返される処理2;
    endwhile;

目次へ

do∼while文

while文と似ているが、do∼while文は最後に指定した条件がtrueである限り同じ処理を何度でも繰り返す。

do∼while文は、ブロック内の処理を実行してから条件判断を行う為、必ず一回は処理が実行される。

while文は、条件判断を行ってからブロック内の処理を実行する為、場合によっては一回も処理が実行されないといったこともある。

    // 構文
    do {
        //繰り返される処理1;
        //繰り返される処理2;
    } while(条件);

使用してみる。

    <?php
    $i = 0;

    do {
        print "{$i}回目の処理です。<br>";
        $i++;
    } while($i < 3);
    //
    //結果
    // 0回目の処理です。
    // 1回目の処理です。
    // 2回目の処理です。
    //
    ?>

目次へ

foreach文

配列を扱う際に使用する特殊な繰り返し文。

配列のキーと値用の変数を用意することで、キーと値を変数に格納できる。

    // 構文
    foreach(配列 as キー用の変数 => 値用の変数){
        //繰り返される処理;
    }

使用してみる。

    <?php
    $susi[0] = "サーモン";
    $susi[1] = "マグロ";
    $susi[2] = "イカ";

    foreach ($susi as $id  => $value) {
        print "{$id}番目の寿司は{$value}です。<br>";
    }
    //
    //結果
    // 0番目の寿司はサーモンです。
    // 1番目の寿司はマグロです。
    // 2番目の寿司はイカです。
    //
    ?>

配列のキーを省略し、値のみ変数に格納することもできる。

    // 構文
    foreach(配列 as 値用の変数){
        //繰り返される処理;
    }

目次へ

break文

switch文でも登場したbreak文は、繰り返し処理の流れを強制的に終了し、ブロックを抜ける処理を行う。

    // 構文
    break;

使用してみる。

    <?php
    for ($i = 0; $i < 3; $i++) {
        if ($i == 2)
            break;
        print "{$i}回目の処理です。<br>";
    }
    //
    //結果
    // 0回目の処理です。
    // 1回目の処理です。
    //
    ?>

目次へ

continue文

continue文は、繰り返し処理の流れを強制的に変更し、ブロック内の先頭に戻り次の処理を行わせる。

    // 構文
    continue;

使用してみる。

    <?php
    for ($i = 0; $i < 3; $i++) {
        if ($i == 1)
            continue;
        print "{$i}回目の処理です。<br>";
    }
    //
    //結果
    // 0回目の処理です。
    // 2回目の処理です。
    //
    ?>

目次へ

ネストについて

条件判断文や繰り返し文を入れ子にすることをネストと呼ぶ。ただ、ネストが深過ぎると可読性が低下するので注意が必要。

    // 例
    for (初期化式; 条件式; 変化式) {
        for (初期化式; 条件式; 変化式) {
          if (条件1) {
              //条件1がtrueだった場合の処理;
          } elseif (条件2) {
              //条件2がtrueだった場合の処理;
          } else {
              //全ての条件がfalseだった場合の処理;
          }
        }
    }

目次へ

作成日:2018/08/01
更新日:2018/08/16