PHPの「endif」は条件分岐(if文)の終わりを意味しています。しかし、PHPプログラミング経験者の中にもendifを見たことがない人もいるでしょう。その原因は、endifはif文をコロン構文で書いたときにしか使われないためです。
そこで今回は、PHPのendifとコロン構文について解説していきます。if文の応用的な使い方についても紹介しているので、ぜひご覧ください。
目次
PHPのendifとコロン構文の書き方とは
PHPプログラミングの「endif」は、条件分岐(if文)をコロン構文で書いた際に使われます。
コロン構文とは、if文などの構造を書く際に、「{ }(波括弧)」ではなく「:(コロン)」を使って記述する構文のことです。「endif」はコロン構文の終わりを意味していて、if文の最後に記述されます。
それでは、実際にコロン構文を使ったif文を見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $score = 58; if ($score >= 80): echo '大変よくできました。'; elseif ($score >= 60): echo 'よくできました。'; elseif ($score >= 40): echo 'もう少し頑張りましょう。'; else: echo 'あなたは補習授業を受けてください。'; endif; ?> |
上記サンプルコードでは、変数scoreの値を条件に、分岐別に出力するメッセージを変えています。
これを基本的なif文の書き方にすると、次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $score = 58; if($score >= 80) { echo '大変よくできました。'; } elseif ($score >= 60) { echo 'よくできました。'; } elseif ($score >= 40) { echo 'もう少し頑張りましょう。'; } else { echo 'あなたは補習授業を受けてください。'; } ?> |
上記のように、コロン構文で書いた場合も、基本的なif文の書き方をした場合も、出力結果に違いはありません。そして、「{ }(波括弧)」を使った条件分岐構文では、最後に記述されていたendifは不要になります。
「elseif」の書き方には注意が必要
PHPの条件分岐(if文)を複数分岐にしたい場合には、「elseif」か「else if」を使って分岐の条件を記述します。この2つの構文はどちらを使うのが正しいといった正解はありません。しかし、if文をコロン構文で書いた場合に「else if」を使うとパースエラーになってしまいます。
if文を「{ }(波括弧)」で書く分には、どちらを使っても何の問題もないだけに、何気なく使ってしまうかもしれません。if文をコロン構文で書く際には、「elseif」を使う点に注意しましょう。
PHPの「if:~else:~endif;」を使う場面
PHPの条件分岐(if文)には、「{ }(波括弧)」で書かれた基本的な構文の書き方と、「endif」を必要とするコロン構文との2通りの書き方があります。そのため、どのように使い分けすれば良いのかについて紹介していきましょう。
if文の書き方は、基本的には状況に応じたソースコードの見やすさを重視して、選択しましょう。具体的には、次のように使い分けてください。
- 基本構文:関数などの一般的な処理。条件が複雑な場合や正確性が必要なとき。
- コロン構文:HTMLとの親和性が必要な場面。WordPressの独自タグを使う場面など。
上記が一般的な使い分け方です。HTMLなど他の言語と並行で使う状況では、コロン構文で記述した方がすっきりとしていて、見やすいコードを書くことができます。
しかし、複雑な処理を記述する場合は、基本的な構文の書き方をした方が、処理を追いやすく、簡単なミスを減らすことができます。
PHPのif文のさまざまな使い方
PHPの条件分岐(if文)には、コロン構文の他にもさまざまな使い方があります。
そこで、PHPプログラミングでif文を使いこなすために、参考となる書き方をいくつか紹介していきます。
if文を1行で記述する書き方
単純なif文であれば、1行で書くこともできます。
1 2 3 4 5 6 7 |
<?php $price = 6200; if ($price >= 5000) echo '高級品です。'; ?> |
上記サンプルコードのように、「{ }(波括弧)」を省略し、条件に対して「true」だった場合には、処理が実行されます。
一般的にはあまり使われない書き方なので、複数人が関わる開発現場では使わない方が良いでしょう。ただし、知識として知っている分には、いつか役に立つ場面もあるでしょう。
複数に分岐させるif文の書き方
既に前述したサンプルコードでも使っていますが、「elseif」や「else if」を使うことで複数の条件に対して分岐させるif文を書くことができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $price = 6200; if ($price >= 10000) { echo '最高級品です。'; } elseif ($price >= 5000) { echo '高級品です。'; } elseif ($price >= 1500) { echo '一般品です。'; } else { echo '訳あり品です。'; } ?> |
上記サンプルコードでは、変数priceの値が6,200円なので、5,000円以上10,000円未満の分岐に入り、高級品用の出力が行われました。
注意してほしいのが、複数分岐は上から順番に条件判定されるという点です。先ほどのサンプルコードの複数分岐について、条件はそのままにして、順番のみ変えた結果をみてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $price = 6200; if ($price >= 1500) { echo '一般品です。'; } elseif ($price >= 5000) { echo '高級品です。'; } elseif ($price >= 10000) { echo '最高級品です。'; } else { echo '訳あり品です。'; } ?> |
上記サンプルコードのように、順番を変えたことによって、出力結果も変わってしまいました。
if文を複数に分岐させる場合には、きちんと意図した処理が行われているか、条件や順番にも注意するようにしましょう。
複数の条件を持ったif文の書き方
if文の条件式には、複数の条件を指定することもできます。AND条件であれば「&&」、OR条件であれば「||」など、分岐に合わせて条件式を工夫しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $price = 6200; if ($price >= 1500 && $price < 5000) { echo '一般品です。'; } elseif ($price >= 5000 && $price < 10000) { echo '高級品です。'; } elseif ($price >= 10000) { echo '最高級品です。'; } elseif ($price < 1500) { echo '訳あり品です。'; } else { echo 'エラー:価格が設定されていません。'; } ?> |
前回は条件式の順番を変えたことにより、意図しない処理が行われていたコードでしたが、条件式に複数の条件を持たせたことにより、順番に左右されず、意図した分岐の処理を行えるようになりました。
まとめ
PHPのendifは、条件分岐(if文)をコロン構文で書いたときの終わりを意味しています。
コロン構文は、見た目がすっきりした見やすいソースコードを書くことができます。特にHTMLとの親和性が高いので、HTMLソースに記述する際には、おすすめの書き方です。ただし、複雑な処理を記述する際には「{ }(波括弧)」を使う基本的な書き方が、おすすめです。
PHPのif文は書き方次第で、わかりやすくもわかりにくくもなります。if文の書き方をしっかりと理解して、読みやすいソースコードを書くように心がけましょう。