PHPのfor文で繰り返し処理(HTML埋め込みでもスッキリな書き方も)

  • このエントリーをはてなブックマークに追加
  • Pocket

スポンサードリンク

PHPでのfor文の基本的な書き方から、HTMLに埋め込んでもキレイにスッキリ書く方法などもご紹介します。

HTMLの中に通常のfor文のコードを埋め込むとソースが汚くなり、閉じ忘れや閉じ過ぎなどのネスト地獄に陥り、思わぬミスを誘発します。

この書き方で、ネストエラーを防ぎましょう。

 

for文の基本

for文の使い方

1234

for文の構文

for文は以下のように記述します。

for (初期値; 繰り返しの条件式; 増減式) {
繰り返す処理
}

for文の動作

以下の例は「オラ」を4回繰り返しています。

オラオラオラオラ

 

上記の例だと、以下のように進みます。

  1. まず変数$iに数字の1を格納する。
  2. 次に変数$iが5未満の場合、処理を続けなさいと命じる。
  3. そして$i++で変数$iに+1ずつ数字を足していくので$iは1ずつ増えていく。
  4. それから「オラ」と表示させる。
  5. そしてまた式の最初に戻り、$iは2なので、処理を続行。
  6. そして$iに1を足す。
  7. まだ$iは5に満たないので処理を続け、「オラ」と追加で表示させる。

………

……

…と繰り返していくと$iが5になり、$i<5の条件に合わなくなるため、処理を終了します。

参考:PHPの変数でムダを省き、効率良くコーディングする方法

for文を使わない場合

では上記のコードでfor文を使わずに書く場合はどうなるか?

以下のようになりますね。

少ない処理だと上記のように書いてもいいですが、例えば0歳~80歳まで1歳刻みのプルダウンメニューを作るとなるとどうでしょう?

optionタグを81個も作らないといけませんね。

「オラ」を1,000回表示させたい場合だとどうでしょう?

for文のような繰り返し処理の関数がないと、気が遠くなる作業ですね。

ループ処理中に特定の値をスキップする

ループ処理中に配列の中で不要な値はスキップしたい時に便利なのがcontinue文です。

if文でスキップしたい値を指定して、該当する値のみ条件分岐でcontinueさせます。

詳しくは以下ページでご紹介しています。

continue文で特定の値をスキップする

特定の値でループ処理を終了させる

ループ処理中に配列の中の特定な値が出てきたら、その時点で処理を終了させる時にはbreakが便利です。

if文で処理を終了させたい値を指定して、該当する値以降はbreakにより出力されません。

詳しくは以下ページでご紹介しています。

break文でループ処理を終了させる

「endfor」でHTMLに埋め込んでもキレイなソースが書ける

上記に紹介した書き方が一般的ですが、HTMLに埋め込んで書くとコードがゴチャゴチャとなり、思わぬ構文エラーを引き起こしがちです。

HTMLに通常のfor文を書いた場合

0~80歳のプルダウンメニューをfor文で作成します。

HTMLにスッキリなfor文を書いた場合

上記はまだシンプルな方ですが、もっと複雑なコードになると最後の波カッコとかよく忘れて、構文エラーになります。

以下のようにスッキリ書くこともできます。

上記のように{(波カッコ)を:(コロン)に、}(波カッコ閉じ)はendforに差し替えて書くこともできます。

if文もそうですが、HTMLに埋め込みながらPHPのコードを書く時は上記の方が見やすいなと私は思います。

参考:PHPでif文(HTML埋め込みでもスッキリな書き方も)

他の方が書いたコードで見かけることも多いと思いますので、知っておくと良いでしょう。

 条件式の処理の簡略化

配列をfor文でループ処理する際、for文の条件式でcountすると処理が重くなるので避けたいですね。

for文の条件式でcountする場合

毎回、数をカウントしながらループ処理をします。

for文の外であらかじめcountしておく場合

あらかじめ配列の数をカウントし、そのあとでfor文でループ処理をしています。

参考:PHPで配列の要素数(長さ)をカウント(count関数)

 

上記2パターンを比べると、以下の違いがありますね。

  1. for文の中で毎回配列をカウントしながらループ処理
  2. for文の前にあらかじめ配列の数をカウントしておく

1.はループのたびに毎回、数をカウントする処理が入るので、その分処理が重くなります。

体感速度的には変わらないでしょうが、ムダな処理はなるべくさせないようコーディングすることも意識したいですね。

スポンサードリンク

  • このエントリーをはてなブックマークに追加
  • Pocket

コメントを残す

*