PHPのif文の書き方3パターンの紹介

公開:2016-03-05 / 制作・開発 / , , , , , , , ,
更新:2017-09-05

SI屋からWeb屋に転職した時、僕は初めてPHPに触りました。

 

その会社は社員数10人規模で、エンジニアは僕を含めて3人で制作案件をひたすら回していたので、毎日終電、納期が迫ると会社に泊まり込みの日々でした。

 

約二年間、そんな生活をしていたのでPHPには自信があったのですが、WordPressのテンプレートファイルをカスタマイズするようになってから、

 

ん?このif文どうなってんだ?

 

と、今まで見たことのないif文の記述で躓いた経験があリます。

 

調べた結果、PHPにはif文の書き方がいくつかあることがわかったので、特に気にしていませんでしたが、たまにWordPressのテンプレートをいじっていると、

 

あれ?あのif文ってどうやって書くんだっけ?

 

となるので、備忘録としてPHPのif文の書き方に触れたいと思います。

 

if文の記述方法

if文の書き方は全部で3つあります。

  • 波括弧
  • コロンを使ったif文
  • 1行で書くif文

 

それぞれ紹介していきます。

(なお、なんでif文の記述が複数あるのかについては、書き方の次に触れています)

 

波括弧

一般的な記述方法なので、PHP経験者であれば特に説明する必要もないかと思いますが、例を挙げておきます。

<?PHP
if ($num > 50) {
    echo "50超える";
}elseif($num < 50){
    echo "50未満";
}else {
    echo "50ちょうど";
}
?>

なお、変数$numには数値が入っている前提です(以下同様)

 

コロンを使ったif文

「初めてWordPressのテンプレートに触った時にわからなかったif文」というのがこちらです。

<?PHP
if ($num &gt; 50) :
    echo "50超える";
elseif ( $num &lt; 50 ):
    echo "50未満";
else :
    echo "50ちょうど";
endif;
?>

 

この例だと、先の波括弧とあまり変わりません。

実はこの書き方は、WordPressのindex.phpやsingle.phpのように、HTMLコーディングが中心のPHPファイルで一部、要素の出しわけが必要なときに使ったりします。

 

例えば、先の例に「50未満の時だけclassをつけて赤字でアラート表示させたい」といった場合は、以下のように値だけではなくhtmlタグごと出し分けできたりします。

 

以下の様な感じです。

<div/>
    <?PHP if ($num > 50) : ?>
    <span>50超える</span>
    <?PHP elseif ( $num &lt; 50 ): ?>
    <span class="fontRed">50未満</span>
    <?PHP else : ?>
    <span>50ちょうど</span>
    <?PHP endif; ?>
</div>

 

こちらは簡単な例ですが、分岐ごとにユニークな要素が多い場合などに重宝します。

 

1行で書く

こちらは読んで字のごとし1行で書くタイプです。

先に紹介したif文を再現する際は以下のように記述します。

<?PHP
if ($num > 50) echo "50超える";
if ($num < 50) echo "50未満";
if ($num == 50) echo "50ちょうど"
?>

elseif やelseは使えないので、使う際はシンプルな分岐のときだけですね。

elseif やelseを使う場合は以下のように記述します。

<?php
if ($num > 50)      echo "50超える";
elseif ($num < 50)  echo "50未満";
else                echo "50ちょうど";
?>

 

おまけ

三項演算子というものもあります。

<?PHP
$num = ( $num == 50 ) ? "50ちょうど" : "50ちょうどではない";
echo $num;
?>

//上記は以下のif文と同じ

<?PHP
if($num ==50){
    echo "50ちょうど ";
}else{
    echo "50ちょうどではない ";
}
?>

 

なぜif文の記述方法が複数あるのか

先にif文の記述パターンについて紹介しましたが、そもそも、何のためにif文の記述方法を使い分けるのでしょうか。

 

それはズバリ、ソースの可読性です。

 

WordPressのテーマファイル作成の例に挙げると、function.phpを作成する場合は波括弧で記述し、index.phpやsingle.phpを作成する場合は、コロン区切りで記述するのが最適だったりします。

 

また、アドホックな条件にマッチした時だけ表示したいといった要件があれば、1行で記述することで、可読性だけではなく、ステップ数削減にもつながります。

 

最後に

いくら可読性がよくなってもコメントを書かなくてもいいということにはなりません。

 

保守性を鑑みて、分岐の条件はコメントしておきましょう。

 

そういった作業をないがしろにすると、仮に別担当者に引き継いだとしても「あの人のソースはよくわかりません」ということで自分のところに帰ってくる事になります。

 

Author:yukio iizuka
プロフィール画像
フリーランスとしてUX視点で業務支援しています。 HCD-Net認定 人間中心設計専門家 LEGO®︎ SERIOUS PLAY®︎ メソッドと教材活用トレーニング修了認定ファシリテーター Hi-Standard好きです。
http://yukioiizuka.com
mislead
MISLEADの記事に共感いただけましたら
いいねをお願いします。

コメント一覧

  • ねじりわさび

    一行で書くタイプでもelse等は使用可能です。

    • mislead

      ねじりわさび さん
      ご指摘ありがとうございます。
      確認して、記事も修正させていただきました。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください



       

© yukio iizuka All Rights Reserved...