【PHP】if文の書き方について【波括弧{}、コロン:】

・波括弧を使用したif文
・コロンを使用したif文
・波括弧は実は省略できる場合がある
・三項演算子

Wordpress関係のソースをみてると、よくコロンを使ったif文が出てくるのでまとめてみました。

PHPは、いくつかの制御構造、つまり、if、 while、for、 foreach、switch に関する別の構文を提供します。 各構造において開き波括弧をコロン(:)、閉じ波括弧をそれぞれ endif;,endwhile;, endfor;,endforeach;, endswitch;に変更するのが 別の構文の基本的な形式となります。
PHP: 制御構造に関する別の構文 - Manual


コロンを使ったif文というのはPHP自体の機能(書き方)のようです。

波括弧を使用したif文

if ($a > $b){
  //真の時実行
}else{
  //偽の時実行
}

こんな感じですね。

if ($a > $b){
    echo "aはbより大きい";
} elseif ($a == $b) {
    echo "aはbと等しい";
} else {
    echo "aはbより小さい";
}

elseif文というのもあります。

参考:PHP: elseif/else if - Manual

コロンを使用したif文

if ($a > $b) :
  //真の時実行
else :
  //偽の時実行
endif;

波括弧を使わない書き方ですね。
HTMLと混ざるときには、この書き方のほうが可読性が良くなるという部分があるとは思います。

<?php if ($a > $b) : ?>
<span>真の時実行</span>
<?php else : ?>
<span>偽の時実行</span>
<?php endif; ?>

こんな感じですね。{}だと閉じ波括弧を見つけにくいというのはあるかとは思います。

波括弧は実は省略できる場合がある

//パターン1
if ($a > $b) $c=1;
//パターン2
if ($a > $b) $c=1; else $c=2;
//パターン3
if ($a > $b)
 $c=1;
else
 $c=2;

実行文が1行の時は、{}を省略できるというルールがあるために上記のような書き方も可能です。明示的に{}を書いたほうが個人的にはよいと思いますが、こういう書き方もできるということです。

三項演算子

(expr1) ? (expr2) : (expr3) という式は、式1 が TRUE の場合に 式2 を、 式1 が FALSE の場合に 式3 を値とします。
PHP 5.3 以降では、三項演算子のまんなかの部分をなくすこともできるようになりました。 式 expr1 ?: expr3 の結果は、expr1 が TRUE と同等の場合は expr1、 それ以外の場合は expr3 となります。
PHP: 比較演算子 - Manual


//条件式 ? 式1 : 式2
// 三項演算子の使用例
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

// 上記は以下の if/else 式と同じです。
if (empty($_POST['action'])) {
    $action = 'default';
} else {
    $action = $_POST['action'];
}

三項演算子を使った書き方もあります。これもよく使われるので、知っておいたほうが良いでしょう。

スポンサーリンク

コメントを残す

メールアドレスは公開されません。
また、コメント欄には、必ず日本語を含めてください(スパム対策)。