初心者コーダーのための
HTML/CSS JavaScript PHP WordPress
難しい言葉や概念より、実践重視の入門ブログ
PHP

【PHP】for、foreachの使い方【繰り返し処理】

【PHP】繰り返し構文 forとforeachを使いこなそう!

forもforeachもwhileと同様、繰り返し処理を行なってくれます。

forは繰り返し構文の中で、最も汎用性が高く、
foreachは繰り返し構文の中でも、配列の繰り返しに特化しています。

どちらも非常にお世話になるので、絶対に使いこなせるようになりましょう!

forの基本構文

forの基本構文は、JavaScriptとほぼ同じです。ラッキー!
というかfor文自体は同じなのですが、変数の定義方法や呼び出し方法が地味に違うだけです。

for($i = 0; いつまで; $i++){
    繰り返し処理する内容;
}

for文の仕組みは以下のような流れによって成立しています。

  1. 変数$iに0を入れておく
  2. 処理が行われるたび、$iに1ずつ加算されていく
  3. 「いつまで」部分で指定したタイミングまで辿り着いたら、処理が終わる

それでは、実際にfor文を使ってみましょう!

サンプルコード

$iに入っている数字を繰り返し出力しています。

<?php 
    for($i = 0; $i < 5; $i++){
        echo "<p>{$i}</p>";
    }
?>

for文でHTMLのタグを繰り返し出力する方法

PHPはHTMLと混在させて使っていくことができるので、少し記述方法を変えると、簡単に繰り返しHTMLを出力していくことができます。

<?php for($i = 0; いつまで; $i++): ?>
    繰り返し出力されるHTML部分
<?php endfor; ?>

ここで、whileやifの時と同じような注意点が2つあります。

① for の終了サイン endfor

通常のfor文には出てこなかった、endfor というものが出てきていますね。

これは「forで繰り返し出力するHTMLはここまでですよ」というサインです。
これがないとどこまで繰り返せばいいか分かりませんからね。

② :(コロン)と ;(セミコロン)

一番最初の for() の後ろにはコロン、最後の endfor の後ろにはセミコロンをつかいます。
間違えるとエラーになってしまうので、注意しましょう。

サンプルコード

先ほどのサンプルコードを、こちらに置き換えてみましょう。

<?php for($i = 0; $i < 5; $i++): ?>
    <p><?php echo $i ?></p>
<?php endfor; ?>

HTMLを出力する際は、圧倒的にこちらの記述方法をつかいます。
内容がしょぼいのであまり楽には見えないかもしれませんが、HTMLの中身が増えると、圧倒的にこちらの方が記述が楽かつ綺麗になります。

foreachの基本構文

foreachは配列を出力することに特化しています。
この構文を使うことで、変数を設置せずとも、配列の要素を順番に処理してくれます。

foreach(配列の変数名 as $e){
    echo $e;
}

変数の名前は何でもいいのですが、この$eの部分に、配列の要素が順番に入っていきます

サンプルコード

「こ」「ん」「に」「ち」「は」と5つの要素が格納された配列を、1文字ずつ順に出力しています。

<?php
    $arr = ['こ', 'ん', 'に', 'ち', 'は'] ;
    foreach($arr as $e){
        echo "<p>{$e}</p>";
    }
?>

foreachで配列をHTMLと混ぜて出力する方法

foreachもforと同様に、HTMLと混在させて使っていくことができます。

<?php foreach(配列の変数名 as $e): ?>
    繰り返し出力したいHTML部分
<?php endforeach; ?>

注意する点は先ほどと同じです。

  1. foreachの終わりに endforeach と記述する
  2. foreach() の後ろにはコロン、eandforeach の後ろにはセミコロン

サンプルコード

これも先ほどのサンプルコードを書き換えています。

<?php $arr = ['こ', 'ん', 'に', 'ち', 'は'] ; ?>
<?php foreach($arr as $e): ?>
    <p><?php echo $e ?></p>
<?php endforeach; ?>

実際の現場での用途

forやforeachはとにかくよく使います。
特にforeachは、データベースに格納され、配列化された要素を全て取り出す際に重宝します。

今後ずっとお世話になるでしょうから、forさんforeachさん宅へ菓子折りでも持っていきましょう。