〜【PHP】if文を使った条件分岐〜WordPressのためのPHP
WordPressのためのPHP。今回はif文をつかった条件分岐について勉強していきたいと思います。過去の記事は下記よりごらんください。
CONTENTS
1.if文とはなにか
if(イフ)とは英語で「もし〜」といいますよね。 PHPでもそのままの意味で引用して「もし、〇〇という条件なら●●という処理をしなさい。それ以外の場合であれば△△の処理をしなさい。」という風に条件を判定させて命令を実行するのがif文になります。条件を指定して、それを満たす場合の処理と、満たさない場合の処理で違う処理をすることができます。例えば「現在時刻」という条件を指定してif文に現在時刻が10時より小さい値であれば「おはようございます。」と表示することができます。
2.if文の書き方
実際にif文を書くときは
if(条件){
条件を満たす場合の処理
}
というように()の中に条件を入れて{}の中に条件を満たす処理を記述します。
さきほどの現在時刻の条件の場合だと
1 2 3 4 |
$hour = date('G'); if( $hour < 10 ){ echo 'おはようございます。'; } |
というように$hour = date('G')で現在時刻を変数に格納し、if( $hour < 10)で現在時刻が10時より小さい場合という条件を指定し、それを満たす場合は「おはようございます。」と表示されるようになります。なので10時より前の時間帯は「おはようございます。」それ以外は表示しないという風になります。
date('G')は現在時刻を0〜23の文字列で取得するPHP関数です。
3.複数の条件の分岐
前項ではひとつの処理を分岐させるだけでしたが、実際には複数の処理をすることがあります。その場合は以下のように書かれます。
if(条件1){
条件1を満たす場合の処理
}elseif(条件2){
条件1を満たさないで、条件2を満たす場合
}elseif(条件3){
条件1と2を満たさないで条件3を満たす場合
}else{
どの条件も満たさなかった場合
}
複数条件がある場合はelseifを使います。elseifを使い複数の条件を指定したら、最後はelseを使います。elseはどの条件も満たさなかった場合の命令なので必ず最後に書きます。どの条件も満たさなかった場合の処理がとくにない場合は入れなくても大丈夫です。
さきほどの例でいくと
1 2 3 4 5 6 7 8 9 10 |
$hour = date('G'); if ( $hour < 10 ){ echo 'おはようございます。'; }elseif( $hour < 16 ){ echo 'こんにちは。'; }elseif( $hour < 20){ echo 'こんばんは。'; }else{ echo 'おやすみなさい。'; } |
というように現在時刻が10時以下の場合は「おはようございます。」また、10時以上で16時以下の場合は「こんにちは。」、16時以上で20時以下の場合は「こんばんは。」それ以外の時間帯の場合は「おやすみなさい。」というようになります。
条件分岐の際のポイント
条件分岐は上から順に処理を行なっていき、処理が完了するとその先の条件は適用されません。どういうことかというと、午前9時にアクセスがあった場合、10時より前なので「おはようございます。」と表示されますが、16時、20時に関してもこの時間より前の時間になります。しかし、16時、20時の命令は適用されず、10時より前の「おはようございます。」が表示された状態(先に書かれている処理を実行した時点)で分岐を終了します。
4.if文の書き方:を使って{}を使わない方法
PHPでは{}の中括弧でくくらずに:(コロン)を使って書く方法もあります。
if(条件1):
条件1を満たす場合の処理
elseif(条件2):
条件1を満たさないで、条件2を満たす場合
elseif(条件3):
条件1と2を満たさないで条件3を満たす場合
else
どの条件も満たさなかった場合
endif;
前項で紹介した例文を書き換える場合は
1 2 3 4 5 6 7 8 9 10 |
$hour = date('G'); if ( $hour < 10 ): echo 'おはようございます。'; elseif( $hour < 16 ): echo 'こんにちは。'; elseif( $hour < 20): echo 'こんばんは。'; else: echo 'おやすみなさい。'; endif; |
とくに難しく考える必要はありません。{}が:に変わったような感じで考えていただくと大丈夫と思います。この場合は条件を指定する際に:を使って最後にendif;で締めます。
5.Wordpressでif文を使った例
実際Wordpressでif文がどのように使われているかというと、例えば個別投稿にも使われています。
1 2 3 4 5 |
<?php if( is_single() ): ?> <h1><?php the_title(); ?></h1> <?php else: ?> <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1> <?php endif; ?> |
<?php if(is_single() ): ?>ではif(is_single())でシングルページ(個別投稿)かどうかの判別をおこないます。シングルページ(個別投稿)の場合はh1の記事タイトルにリンクをつけない。また、elseでそれ以外の場合には<a href="<?php the_permalink() ?>(投稿へのリンクを意味するタグ)でシングルページ(個別投稿)でない場合はリンクをつける。という条件分岐になります。
参考例文などはこちらの本を参考にさせていただきました。
参考書籍:WordPressユーザーのためのPHP入門 はじめから、ていねいに。