PHPとはこんなもの〜繰り返し処理の for文

繰り返し処理とは

決まった回数または条件を満たしている間、同じ処理を繰り返し行うこと。

for文を使うケース

処理を繰り返す回数があらかじめわかっている場合。

for文の書き方

<?php
for (カウンタ変数の初期値; 条件式; カウンタ変数の増減値) {
カウンタ変数が決まった値になるまで繰り返す処理
}
?>

カウンタ変数

繰り返し処理の回数を数えるための変数。一般的な変数と機能は同様だが、繰り返し処理の回数を数えるという用途を協調するために“カウンタ”という言葉が使われる。
カウンタ変数には慣習的に i という変数名がつけられることが多い。 i は、“索引”を意味する index の頭文字。

for文の使用例

1~10までの整数を順番に表示するコード。

<?php
for ($i=1; $i<=10; $i+=1) {
echo $i;
]
?>

上記のコードの () の中身を分解すると、

  1. $i=1 カウンタ変数の初期値: カウンタ変数($i)に初期値を代入する

  2. $i<=10 条件式: カウンタ変数($i)の値が10以下のときに true を返す

  3. $i+=1 カウンタ変数の増減値: 処理を繰り返すごとにカウンタ変数($i)に 1 を加算する

代入演算子とは

カウンタ変数($i)に 1 を加算するときに記述した += は、“代入演算子”という。
代入演算子とは、変数に値を代入するときに使う演算子のこと。

代入演算子の一覧

  • =: 変数に右項の値を代入する(代入)。

  • +=: 変数の値に右項の値を足して代入する(加算代入)。

  • -=: 変数の値から右項の値を引いて代入する(減算代入)。

  • *=: 変数の値に右項の値をかけて代入する(乗算代入)。

  • /=: 変数の値を右項の値で割って代入する(除算代入)。

  • %=: 変数の値を右項の値で割ったあまりを代入する(剰余代入)。

インクリメント演算子とデクリメント演算子

$i+=1 や $i-=1 のように単純に 値を 1 増減したい場合は、以下のように書き換えることができる。

  • $i+=1 → $i++

  • $i-=1 → $i--

この ++ のことを“インクリメント演算子”、 -- のことを“デクリメント演算子”と言い、コードを簡潔に記述できるので、繰り返し処理ではよく使われる。

無限ループの危険性

繰り返し処理を行うときに注意しなければならないのが“無限ループ”。
無限ループは、条件式が true を返し続けるとき( false を返す可能性がないとき)に発生する。

たとえば、上記の1~10を順番に表示するコードを以下のように書き換えた場合、カウンタ変数($i)が 10 より大きくなることが永遠にないので無限ループが発生する。

<?php
for($i=1; $i<=10; $i--) {
echo $i;
}
?>

無限ループが発生したときの対処法

もし無限ループが発生する処理をブラウザで実行してしまった場合は、すぐにタブを閉じるか読み込み中止ボタンを押す。
そのうえで、無限ループの発生源となっているコードを修正する。

break文

break文を記述すれば、繰り返し処理の途中でループから抜け出して、処理を強制終了することができる。以下のように条件分岐のif文と組み合わせて使う。

<?php
for($i=1; $i<=10; $i++) {
echo $i;
// カウンタ変数($i)の値が 5 であればbreak文で繰り返し処理を強制終了する
if($i===5) {
break;
}
}
?>

continue文

continue文は繰り返し処理の途中で中断し、次のループに進むための命令。break文と同じようにif文と組み合わせて使う。

たとえば 1~10 までの整数のうち偶数のみを出力したいときは以下のようなコードを書くことで実現できる。

<?php
for($i=1; $i<=10; $i++) {
// カウンタ変数($i)の値が奇数(2で割った余りが1)であれば値を出力せずにcontinue文で次のループに進む
if($i%2===1) {
continue;
}
echo $i;
}
?>

いただいたサポートは、私がリラックスして楽しく暮らしていけるようなアイテムの購入費用として大切に使います。内容はnoteで報告します。いつも、本当にありがとうございます。