【PHP】for文の基本と実用例:使い方や記述方法を解説

for文はプログラムに欠かせない制御構文の一つです。for文は特定のコードを繰り返し実行できるので、効率的なコードが実装できます。この記事では、PHPのfor文についての基本的な使い方から実用的な例まで解説していきます。

for文の基本構造

PHPのfor文の基本構造は以下のようになります。

for (初期化; 条件; 増減) {
    // 繰り返し処理するコード
}

この構造は、以下の3つの部分から成り立っています。

  1. 初期化: ループの最初に一度だけ実行される部分です。通常はループカウンタの初期値を設定します。
  2. 条件: ループを続けるかどうかを決定する条件です。条件がtrueである限り、ループが続きます。
  3. 増減: 各ループの最後に実行され、通常はループカウンタの値を増減させます。

記述例

では、具体的な例を見てみましょう。以下のコードは、1から10までの数字を順番に表示するfor文です。

for ($i = 1; $i <= 10; $i++) {
    echo $i . " ";
}
出力
1 2 3 4 5 6 7 8 9 10

このコードでは、変数$iが1から始まり、10以下の間は繰り返し処理を行います。各ループごとに$iの値が1ずつ増え、その値が画面に表示されます。

配列とfor文の組み合わせ

for文は配列を扱う際に非常に便利です。例えば、以下のコードは配列内の全ての要素をループして表示します。

$fruits = ["Apple", "Banana", "Cherry"];

for ($i = 0; $i < count($fruits); $i++) {
    echo $fruits[$i] . " ";
}
出力
Apple Banana Cherry 

この例では、配列$fruitsの要素数をcount()関数で取得し、ループの条件として使用しています。結果として、配列内のすべての果物の名前が表示されます。

多重ループ

for文にfor文を内包すると複雑なループを実現できます。

九九

九九の表を出力するプログラムを考えてみます。

for($i = 1; $i < 10; $i++) {
    for($j = 1; $j < 10; $j++) {
        echo ($i * $j) . ' ';
    }
    echo PHP_EOL; // 改行文字
}

掛け算をA×Bとすると、Aは$iで、Bは$jになります。
$iと$jは1から始めます。まず$iを1で固定して、$jを1から9まで増分していきます。そしてコード三行目で1×1,1×2…のように計算して以下のように出力します。

1 2 3 4 5 6 7 8 9 

これが1の段です。次に$iを2に増やして固定、$jを再び1から9まで増分して2×1,2×2…のように出力します。

1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 

同様の計算を9の段まで繰り返して九九の表が出力されます。

出力
1 2 3 4 5 6 7 8 9 
2 4 6 8 10 12 14 16 18 
3 6 9 12 15 18 21 24 27 
4 8 12 16 20 24 28 32 36 
5 10 15 20 25 30 35 40 45 
6 12 18 24 30 36 42 48 54 
7 14 21 28 35 42 49 56 63 
8 16 24 32 40 48 56 64 72 
9 18 27 36 45 54 63 72 81 

break文とcontinue文

break

for文のループを途中で中止したいときには、break文を使います。下記のコードでは、$iを0から9までカウントを進める条件になっていますが、$iが5のときにforループを中止して強制的にブロックを抜けます。

for ($i = 0; $i < 10; $i++) {
    if ($i == 5) {
        break;
    }
    echo $i . " ";
}

// 出力: 0 1 2 3 4

continue

現在のループ処理を飛ばしてカウントを進めたい場合、continue文を使います。下記のコードでは、$iが5になったときに現在のループ処理を飛ばして次のループ処理に進みます。

for ($i = 0; $i < 10; $i++) {
    if ($i == 5) {
        continue;
    }
    echo $i . " ";
}

// 出力: 0 1 2 3 4 6 7 8 9
多重ループのbreakとcontinue

多重ループの中からbreakやcontinueしようとすると、一段階だけしかループを抜けられません。一気にループを抜けたい場合は break 2;continue 2; のようにして、ループを抜ける段数を指定することができます。

まとめ

for文は配列の処理を行う上でほぼ必須の制御構造です。既存のコードを読む際にも頻出するので、スムーズにコードを読み込むためにも基礎をおさえておきましょう。

コメント