PHP - for

公開日:2020-12-22 更新日:2020-12-22
[PHP]

1. 概要

for を使うと、条件式を満たす間、処理を繰り返し実行することができます。
処理を繰り返すことをループと呼びます。
for (変数の初期化; 条件式; 変数の増減) {
  処理;
}

例えば、5回処理を実行したい場合には、以下のようにします。
for ($i = 1; $i <= 5; $i++) {
  処理;
}
$i が 1 から始まり、$i が 5 以下の場合にループします。
そして、処理が行われる度に、$i++ で、$i の値を +1 しています。
-1 する場合は、$i-- とします。

2. 多重ループ

for を入れ子にすることもできます。
次の例では、10回繰り返す処理を、5回繰り返すため、合計50回処理が実行されます。
for ($i = 1; $i <= 5; $i++) {
  for ($j = 1; $j <= 10; $j++) {
    処理;
  }
}

3. ループ変数

for で使う変数のことをループ変数と呼びます。
呼び名が変わるだけで、普通の変数と同じです。
ループ変数は、通常、$i、$j、$k が使われます。
他の変数名を使っても問題ありませんが、$i を使うと、カウントアップしながら処理をしていると言うのが、すぐにわかります。
逆に、$i、$j, $k を他の用途で使うと、ループ変数と誤解する可能性があるため、注意する必要があります。

4. 無限ループ

常に条件式を満たす場合は、処理が永遠に終わらなくなります。これを無限ループと呼びます。
次の例では、$i++ とするところを、$i-- にしているため、ループから抜け出せません。
for ($i = 1; $i <= 5; $i--) {
  処理;
}

5. break

ループから途中で抜けたい場合は、breakを使います。
for ($i = 1; $i <= 10; $i++) {
    if ($i == 5) break;

    print($i);
}
実行結果。ループが最後まで回らずに、途中で終わっています。
1234

6. continue

ループの処理の途中で、処理をスキップして次のループ処理に進ませたい場合は、continue を使います。
continue を実行すると、処理がループの先頭に戻り、ループ変数の増減が行われます。
for ($i = 1; $i <= 10; $i++) {
  if ($i == 5) continue;

  print($i);
}
実行結果。5 の処理がスキップされています。
1234678910

7. 使用例

for を使って階乗を求めます。
$n = 5; //階乗の値 5! = 1*2*3*4*5
$a = 1; //答え
for ($i = 1; $i <= $n; $i++) {
    $a = $a * $i;
}
var_dump($a);
var_dump(1 * 2 * 3 * 4 * 5);
実行結果
int(120)
int(120)