takrie work

phpのforeach文とif文をHTMLにスッキリと埋め込む方法

プログラミング

phpのforeach文とif文をHTMLに埋め込む方法をお伝えします。 ただPHPの中にHTMLを入れるとコードが煩雑になってそれぞれどの文なのかが分かりづらくなる時があります。 そんな時はHTMLとPHP文を分けてコードを書くと視覚的に分かりやすくなります。 具体的なコードの例を挙げて説明してきます。

foreach文の使い方

まずは基本的なforeach文の使い方から。

<?php
    $fruits = ["バナナ","りんご","ぶどう"];
    foreach($fruits as $key => $value){
        echo $key;
        echo "番目のフルーツは";
        echo $value;
        echo "です。<br>";
    }
?>

上記のコードの出力結果は以下の通りです。

0番目のフルーツはバナナです。
1番目のフルーツはりんごです。
2番目のフルーツはぶどうです。

まず$fruitsに配列でフルーツの名前を代入します。そして foreach($fruits as $key => $value){ )で$fruitsに入った中身を順番に出しています。 $keyは何番目かの数字を表します。$valueは$fruitsの中身を一つずつ表示します。 $keyも$valueも$fruitsに入った個数分繰り返しが発生し、$keyの中身は0,1,2となり、$valueの中身はバナナ、りんご、ぶどうとなります。 ちなみに配列の番数は0から始まり、1、2とつづいていきます。 配列の個数分繰り返し表示してくれるのは便利ですね。 ちなみに$keyも$valueも$numberとか$nameとか任意の変数名にしてもOKです。

foreach文をHTMLに組み込むやり方

つづいて今使ったforeach文をHTMLに組み込んでみましょう。 PHPをHTMLに組み込んで表示させるやり方はいくつかあります。 最初はPHPのコードにHTMLを入れたやり方でやってみましょう。

<h1>フルーツの名前</h1>
<ul>
<?php
$fruits = ["バナナ","りんご","ぶどう"];
foreach($fruits as $key => $value){
    echo "<li>";
    echo $key;
    echo "番目のフルーツは";
    echo $value;
    echo "です。</li><br>";
}
?>
</ul>

もしくはこれでも同じです。

<h1>フルーツの名前</h1>
<ul>
<?php
$fruits = ["バナナ","りんご","ぶどう"];
foreach($fruits as $key => $value){
    echo "<li>".$key."番目のフルーツは".$value."です。</li><br>";
}
?>
</ul>

出力結果は以下の通りです。

<h1>フルーツの名前</h1>
<ul>
    <li>0番目のフルーツはバナナです。</li>
    <li>1番目のフルーツはりんごです。</li>
    <li>2番目のフルーツはぶどうです。</li>
</ul>

上記のやり方は、PHPの中でHTMLを表示させている感じです。 もちろんこれでもきちんと表示されるのでOKではあります。

HTMLとPHPを分けて組み込む方法

では次にHTMLとPHPをできるだけ別個のものとして表示させてみます。

<h1>フルーツの名前</h1>
<ul>
<?php
    $fruits = ["バナナ","りんご","ぶどう"];
    foreach($fruits as $key => $value){ ?>
    <li><?php echo $key;?>番目のフルーツは<?php echo $value;?>です。</li>
<?php } ?>
</ul>

これでも出力結果は先ほどと同じです。 先ほどはPHPのechoでHTMLを表示させていましたが、今回はPHPのforeach文とHTMLとを分けています。 HTMLのタグなどはこのやり方の方がスッキリしていますし、先ほどと比べるとHTMLが主体の書き方をすることができ、純粋なHTMLの書き方に近く見えます。

<li><?php echo $key;?>番目のフルーツは<?php echo $value;?>です。</li>この一行が配列の数だけ繰り返し<li>タグとして表示されます。 HTMLをコーディングする場合はこちらの方が見やすいのではないでしょうか。

endforeachを使ってHTMLに組み込む方法

そしてforeach文をHTMLに組み込む方法としてまた少し違った方法もあります。

<h1>フルーツの名前</h1>
<ul>
<?php
    $fruits = ["バナナ","りんご","ぶどう"];
    foreach($fruits as $key => $value): ?>
    <li><?php echo $key;?>番目のフルーツは<?php echo $value;?>です。</li>
<?php endforeach; ?>
</ul>

{の代わりに:を、}の代わりに endforeachを使っています。 どちらを使っても出力結果は同じです。 foreach文の基本的な使い方は{}ですが、例えば条件分岐のif文を併用する場合はendforeachを使うことで、foreach文がどこまででif文がどこまでかを分かりやすくすることができます

foreach文とif文の併用例

foreach文とif文を併用したコードの例を下に挙げてみます。

<h1>フルーツの名前</h1>
<ul>
<?php
    $fruits = ["バナナ","りんご","ぶどう"];
    foreach($fruits as $key => $value){ ?>
        <?php
        if($value == "りんご"){ ?>
            <li><?php echo $key;?>番目のフルーツは私の大好きな<?php echo $value;?>です。</li>
        <?php } else { ?>
            <li><?php echo $key;?>番目のフルーツは<?php echo $value;?>です。</li>
        <?php } ?>
<?php } ?>
</ul>

出力結果は以下の通りです。

<h1>フルーツの名前</h1>
<ul>
    <li>0番目のフルーツはバナナです。</li>
    <li>1番目のフルーツは私の大好きなりんごです。</li>
    <li>2番目のフルーツはぶどうです。</li>
</ul>

問題なく表示されましたが、多少{}が多いのが気になります。 {}がそれぞれどれと対応しているのか分かりづらくなる時があります。

endforeachとendifを併用した例

つづいてendforeachを使ったコードを見ていきましょう。 if文もforeachと同じ要領で、{}を使わずにendifとすることができます。 if文の場合は、endifelse:を使用します。

<h1>フルーツの名前</h1>
<ul>
<?php
    $fruits = ["バナナ","りんご","ぶどう"];
    foreach($fruits as $key => $value): ?>
        <?php
        if($value == "りんご"): ?>
            <li><?php echo $key;?>番目のフルーツは私の大好きな<?php echo $value;?>です。</li>
        <?php else: ?>
            <li><?php echo $key;?>番目のフルーツは<?php echo $value;?>です。</li>
        <?php endif; ?>
<?php endforeach; ?>
</ul>

こんな感じです。先ほどは{}が連発し、それぞれどの文に対応しているか分かりづらかったのですが、今回は{}の終わりがendforeachとendifになっているので、どこまでがif文でどこまでがforach文なのかが分かりやすくなっています。 今回の例はシンプルな例なので違いがあまりないかもしれませんが、コードがもっと複雑になると、{}はどの文に対応しているかが分かりづらくなります。 そんな時は今回のような書き方をすると多少コードがシンプルになって見やすく見えます。

今回の記事は以上になります。最後までお読みくださりありがとうございます。