プログラミングでは基礎としてあげられるものの中で条件分岐の処理がありますが、PHPには様々な条件分岐の方法があります。基本的な目的としては、条件によって処理を切り分けるという点で同じなのですが、書き方も大きく異なり、それぞれのメリットもあります。今回はPHPで扱う様々な条件分岐の書き方についてまとめてみたいと思います。
if 〜 else 〜
PHPだけでなくいろんなプログラミング言語で用いられる条件分岐の基本となる書き方です。関数の中で処理を切り分けたり、出力する値を変えたりなど、汎用的に使える形になります。また、複雑な条件にも対応できます。ただし、条件の数が多くなったり、複数条件が重なる場合などはコードの見通しが悪くなることもあります。
【PHP】
<?php if( 条件A ) { // 条件Aの処理 } else if( 条件B) { // 条件Bの処理 } ?>
例としてはこのように、処理や値を条件で切り分ける場合などで使いやすいですね。コードも読みやすい形になります。
【PHP】
<?php $text = 'man'; if($text === 'man') { echo '男性'; } else if($text === 'woman') { echo '女性'; } // 男性 と出力される ?>
if: 〜 else: 〜 endif;
PHPはもともとHTMLの拡張として誕生した背景もあり、HTMLの中に書くことができたりと、HTMLとの親和性が高いプログラミング言語です。この書き方の場合には、条件と処理の部分がタグ要素レベルで分かれているので、長い文字列を出力する場合や、HTMLの中に出力する場合などでとても書きやすくなります。
【PHP】
<?php if( 条件A ): ?> <!-- 条件Aの処理 --> <?php elseif( 条件B ): ?> <!-- 条件Bの処理 --> <?php endif; ?>
例としては下記のようになります。HTMLを使った処理などが必要となっても、echoで文字列としてHTMLを用意しなくてもいいのでコードの見通しが良くなります。
【PHP】
<?php $text = 'success'; if($text === 'success'): ?> <p>テストの結果は合格です。処理は正常に行われています。</p> <?php elseif($text === 'error'): ?> <p>テストの結果は失敗です。処理中にエラーが発生しています。</p> <?php endif; ?>
三項演算子
条件分岐というよりも、値の算出に近いものがありますが、条件が2通りしかなく、単純に値の切り替えを行う場合には三項演算子を使った書き方がすっきりとして便利です。
【PHP】
<?php 変数 = ( 条件 ) ? trueの値 : falseの値; ?>
このように、変数の代入に条件を加えて、条件に対応した値を用意しておきます。こうすることで条件によって値が変わり、条件も変わる度に値も切り替えることができます。トグル機能でclass名などを切り替える動作などに使いやすいのではないでしょうか。
【PHP】
<span class=" <?php $is_active = true; $result = ($is_active) ? 'active' : 'default'; echo $result; // active と出力される ?> ">class名を条件で切り替える</span>
swtch case 〜
最後はswtch文を使った方法です。これまでのif文を使った方法とは書き方も少し異なります。まず値を決めて、その値の条件に合わせてそれぞれの処理を記述していく形になります。正しく条件分岐させるために、処理の後にはbreak句を忘れずに入れるようにします。最後にdefalt句を使うことで、どの条件にも当てはまらない場合の処理を定義することも可能です。
【PHP】
<?php switch ( 値 ) { case ( 条件A ); // 条件Aの処理 break; case ( 条件B ); // 条件Bの処理 break; default; // 全ての条件にマッチしない処理 } ?>
この方法では下記のように条件の数が多い場合でもコードをすっきりとさせることができます。また、条件の比較が緩やかだったりするので、基本的には値を参照し、その値の条件で処理を切り分けるという方法になります。
【PHP】
<?php switch ('tuesday') { case 'monday': echo '月曜日'; break; case 'tuesday': echo '火曜日'; break; case 'wednesday': echo '水曜日'; break; case 'thursday': echo '木曜日'; break; case 'friday': echo '金曜日'; break; case 'saturday': echo '土曜日'; break; case 'sunday': echo '日曜日'; break; default: echo '何曜日ですか?'; break; } ?>
使い分ける場面
このように同じ条件分岐を目的とした処理でも、書き方によって使いどころは大きく変わってきます。下記にはやや主観も入っていますが、PHPでの条件分岐における書き方の使い分けをまとめてみました。
【if 〜 else 〜】
→関数などで一般的な処理として使ったり、複雑な条件や厳密さが必要になる場合など
【if: 〜 else: 〜 endif;】
→HTMLとの親和性が求められる場合や、WordPressなどで独自タグを使う場合など
【三項演算子】
→結果が2通りしかない場合で、トグル処理などで値の出力をスマートに切り替えたい場合など
【swtch case 〜】
→値を参照する条件で、必要とされる分岐が多い場合など
WordPressを扱う場合には、ページテンプレートの中に処理を直接書いたり、CMS側で用意されている独自タグや関数をHTMLと並行で使うので、これらの使い分けが見やすいコードを書く上でのポイントになってきそうですね。
今回はPHPでの条件分岐の書き方についていろいろとまとめてみました。同じ条件分岐でもこれだけ書き方に違いがあるのはPHPの特徴ではないでしょうか。うまく使い分けることで、見通しの良いコードを書けるようにしていきたいですね。