HOME > PHP > PHPの条件分岐(if分)書き方に混乱したら読むページ

PHPの条件分岐(if分)書き方に混乱したら読むページ

if~else~enifというような条件分岐のコードを書くことは多い。位置から書くもあるけれど、ネット検索してコピペして改変することも多い。

そんなときに困るのが、二つ以上のソースコードを参考にしようとして、if文の書き方が微妙に違ってしまうケース。一つにできない・・・(汗。

if文の書き方はいくつかある

まず、if文の書き方はいくつかあることと具体的にどういうことかをおさえたい。

書き方1:「:と;を使う書き方」

WordPressのソースコードなんかで、カテゴリーごとにHTMLのソースコードを変えるときにわかりやすい書き方。私はこの書き方がいちばんわかりやすくて好きです。

<?php if(in_category('29')): ?>
    カテゴリID29のときに表示するもの
<?php elseif(in_category('30')): ?>
    カテゴリID30のときに表示するもの
<?php else: ?>
    それ以外に表示するもの
<?php endif; ?>

if、elseif、elseの後に:を書き、最後にendif;で閉めるという感じ。

書き方2:「{}」を使う書き方

私を悩ませるソースコードがこれです。PHPをふだんから使っている人が良く使うみたいだし、WordPressの公式配布テーマでも良くつかわれています。

<?php if(in_category('29')){ ?>
    カテゴリID29のときに表示するもの
<?php }elseif(in_category('30')){ ?>
    カテゴリID30のときに表示するもの
<?php }else { ?>
    それ以外に表示するもの
<?php } ?>

まあ、↑これならまあ混乱しないんですけれど、↓こうなると悩んでしまいます。でも「{}」を使う書き方なら↓こっちですよね。

<?php if(in_category('29')){
    echo "カテゴリID29のときに表示するもの";
}elseif(in_category('30')){
    echo "カテゴリID30のときに表示するもの";
}else {
    echo "それ以外に表示するもの";
}?>

if、elseif、elseの後の表示したいものを{}で囲う書き方。

書き方3:

知らなかったけれど、↓こういう書き方もあるそうです。

<?php
if(in_category('29'))      echo "カテゴリID29のときに表示するもの";
elseif(in_category('30'))  echo "カテゴリID30のときに表示するもの";
else                echo "それ以外に表示するもの";
?>

でも↓これはダメです。エラー出ます。

<?php if(in_category('29')) ?>
カテゴリID29のときに表示するもの
<?php elseif(in_category('30')) ?>
カテゴリID30のときに表示するもの
<?php else ?>
それ以外に表示するもの
<?php ?>

参考にしたサイト