PHPのfor文(繰り返し構文)を使いこなす
PHPのfor文を使えば、処理を何度も繰り返して実行することが出来ます。for文による繰り返し処理をマスターすれば、同じ処理を何度も書くことなく、簡潔で可読性の高いプログラムを書くことが出来るようになります。
今回は、PHPにおけるfor文を実際のコードと共に解説していきます。
for文(繰り返し構文)とは
プログラムにおいて、【ある変数に1を足し続ける】【配列の全ての要素を取り出して変数に渡し続ける】等、似たような(あるいは全く変わらない)処理を何度も繰り返す場面はとてもありふれたものです。こういった場合、必要な回数に到達するまで延々と同じコードを書き続けることは、冗長かつプログラムの可読性を下げるという点で避けるべき行為です。
このように似たような処理を繰り返すための構文として、大半のプログラミング言語には【for文】という繰り返し同じ処理を行うための構文が存在しています。
for文の概要
for文はほとんどのプログラミング言語に備わる繰り返し構文のひとつです。
指定した条件を満たす間は、for文内に記述したコードを繰り返し処理し続けます。繰り返し構文には他にも【while】などが存在しており、こちらについてもほとんどのプログラミング言語で用意されている構文です。
ほとんどのプログラミング言語で用意されているfor文ですが、その書き方に若干違いはありますが、基本的には類似したものである場合がほとんどです。
PHPのfor文特有の事柄
PHPのfor文は、様々なプログラミング言語のfor文と比較すると、かなり標準的な記法のものであると位置づけることができます。PHPのif文やelse文のように、コロンを使った記法が可能であることは少々特殊であると言えますが、それ以外はほぼ完全に標準的なfor文の記法として実装されています。
for文の使い方
for文は次のように書くことができます。
for (式1; 式2; 式3) {
// 任意の繰り返し処理
}
式1は繰り返し処理の開始時に必ず実行される式です。おもに、繰り返し処理を制御する変数の初期化用に使われます。
式2は繰り返しの条件です。これを満たす間、for文内の処理が繰り返され続けます。
式3は1ループ終了ごとに実行される式です。おもに、繰り返し処理を制御する変数の値の更新用に使われます。
for文の基礎文法は以上ですが、実際に式1~3にどのような記述をするかイメージが湧きにくいので、実際のコードと共に解説していきます。
for文の基本
もっとも基本的なfor文のコードは次のようなものです。
for ($i = 0; $i < 10; $i++) {
// 任意の繰り返し処理
}
forの次に来る括弧内の式について、1つひとつ解説していきます。
まず、式1として割り当てられている【 $i = 0 】について。
これは繰り返し処理の開始時に、変数i をゼロに初期化する
というものです。
なぜ変数i をゼロで初期化したかというと、変数$i で【繰り返し回数】を分かりやすくするためです。
式2で指定された条件(変数i が10より小さい間)は、式3(1ループごとに変数i をインクリメントする)との兼ね合いにより、【 1ずつ大きくなる変数i の値が10以上になるまで繰り返し処理を行う 】という意味合いのものになります。
変数i をゼロに初期化しておくと、式2や3の条件と見比べたとき【ああ、このfor文は処理を10回繰り返すものなのだな】とすぐに理解することができます。変数i をゼロで初期化したのはそのためです。
なお、ここで仮に使用した変数名【 i 】はfor文において頻繁に使われる変数名です。
式1で指定する変数名は自由ではあるのですが、様々なプログラミング言語において、for文の式1で指定する変数名は【 i 】であることが多いです。
なお、インクリメントとは式3で記述している【 ++ 】の演算子のことを示します。
これは【左辺に値を1ずつ追加していく】という意味になります。【 += 1 】と同様の意味合いになるということです。
また、インクリメントとは逆に【デクリメント】という言葉も存在しています。
これは【 ++ 】とは真逆の【 -- 】という演算子で示されます。【左辺の値を1ずつ引いていく】という意味になります。【 -= 1 】と同様の意味合いになるということです。
breakでfor文を途中で抜ける
【 break 】を使えば、繰り返し処理の途中で、その繰り返し処理から脱出することが出来ます。
コードは以下の通りです。
for ($i = 0; $i < 10; $i++) {
// 任意の繰り返し処理
if ( /* 任意の条件A */ ) {
break;
}
}
上記コードの場合、繰り返しの途中で【任意の条件A】を満たす状態になった時点で、if文内のbreakが実行され、繰り返し処理が強制終了します。
【 break 】ですが、これは【 for文 】以外の繰り返し構文(while文など)においても、繰り返しを脱出する構文として使用可能です。
continueでfor文の途中で次の繰り返し処理へ移らせる
【break】が繰り返し処理そのものから脱出する機能であったのに対し、【現在のループのみをスキップして、次のループを開始】させる【continue】という構文が存在します。
使い方はbreakとほぼ同様で、以下のように書くことが出来ます。
for ($i = 0; $i < 10; $i++) {
// 任意の繰り返し処理
if ( /* 任意の条件A */ ) {
continue;
}
}
上記コードの場合、繰り返しの途中で【任意の条件A】を満たす状態になった時点で、if文内のcontinueが実行され、現在のループをスキップし、次のループへと処理を移行します。
まとめ
for文を使えばコードを簡潔にすることが出来ます。また、for文等のループ・繰り返し構文から脱出するための構文【break】や【continue】を用いることで、条件に応じた繰り返し処理のループ回数等、細かな調整を行うことが出来ます。
PHPの繰り返し構文をマスターし、可読性の高い再帰的なコードを書けるようにしていきましょう。