条件分岐

PHPプログラムは上から下へ記述した順に実行されていきます。

しかし特定の条件によっては処理を分けたい場合もあるでしょう。

そこで「条件分岐」を使います。

if文

条件によって処理を分岐させるための使われるのが「if」文です。

if(条件式){
	//実行する処理
}

{ ……… }」で囲まれた部分をブロックと呼びます。

if文は条件式に当てはまったのときにブロック内に記述された処理を実行します。

実行される処理が1つだけの場合はブロックを省略しても構いません。

if(条件式)
	//実行する処理
$price = 300;
if($price >= 200){
	echo '価格は200円以上です';
}

変数「$price」に格納された値が200よりも大きいかを判別し、条件に当てはまればブロック内の処理を実行します。

論理値

論理値」とは真か偽かを表す変数の型のことです。

真の場合は「TRUE」、偽の場合は「FALSE」の値を持ちます。

if文では条件式の結果が真(TRUE)か偽(FALSE)かで処理を分けています。

条件が正しかった場合には「$price >= 200」という式そのものが真(TRUE)の値を持ちます。

逆に、条件が正しくなかった場合には「$price >= 200」という式そのものが偽(FALSE)の値を持ちます。

比較演算子は評価した結果を真(TRUE)か偽(FALSE)のいずれかの値で返します。

論理値の値は TRUE または FALSE

大文字小文字は区別しません。

また、明示的に論理値を変数などに代入することもできます。

$var = TRUE;

また、次のように記述することもできます。

$var = TRUE;
if($var){
	//実行する処理
}
$var = TRUE;
if($var) {
	echo '真です。';
}else{
	echo '偽です。';
}

比較演算子

if文などの条件分岐は条件式の内容が真か偽かで処理を分けています。

この条件式の中で使われているのが「比較演算子」です。

比較演算子は、例えば「Aと等しい」とか「Aより小さい」などといった条件を表すものです。

比較演算子の一覧

演算子 記述例 意味
== A == B BとAの値が等しい
=== A === B BとAの値が等しく、型も等しい
!= A != B BとAの値が等しくない
<> A <> B BとAの値が等しくない
!== A !== B BとAの値、または型が等しくない
> A > B BよりAが大きい
>= A >= B BよりAが大きいか等しい
< A < B BよりAが小さい
<= A <= B BよりAが小さいか等しい

比較演算子は左辺と右辺に指定した数値や文字列を比較して等しいか、大きいか小さいかなどを判断します。

値の比較

数値の場合

$num = 30;
if($num == 30){
	echo '変数の値は30です。';
}

文字列の場合

$name = '山田太郎';
if($name == '山田太郎'){
	echo 'あなたは山田太郎です。';
}
$age = 24;
if($age >= 20){
	echo 'あなたは20歳以上です。';
}

論理演算子

比較演算子では「Aより小さい」といった1つの条件式を記述することができます。

ですが、プログラムを記述していくうえで「(Aより小さい)かつ(Bより大きい)」ようにもっと複雑な条件式を利用したい場合がでてきます。

そこで使われるのが「論理演算子」です。

演算子 記述例 意味
&& または and A && B AとBがともに真の場合に真
|| または or A || B AかBの少なくとも1つが真の場合に真
xor A xor B AかBのどちらか1つだけが真の場合に真
! !A Aが真の時に偽、偽の時に真

論理演算子は左辺と右辺に「Aより小さい」「Bより大きい」といった比較演算子などを使った条件式を記述します。

そして、式全体の結果を論理値である真か偽で返します。

$age = 24;
if($age >= 20 && $age <= 30){
	echo 'あなたの年齢は20歳から30歳の間です。';
}

上記では左辺の条件式「$age >= 20」と右辺の条件式「$age <= 30」がお互いにTRUEのときに、全体式「$age >= 10 && $age <= 30」がTRUEを返します。

if-else文(条件式が偽の時の処理)

if文では条件式が偽の場合に実行する処理も記述することもできます。

if(条件式){
	//実行する処理
}else{
	//実行する処理
}

条件式を評価して、真(TRUE)だった場合にはその後のブロック内の処理を行います。

逆に、偽(FALSE)だった場合にはelseの後のブロック内の処理を行います。

実行される処理が1つだけの場合はブロックを省略しても構いません。

if(条件式)
	//実行する処理
else
	//実行する処理
$age = 24;
if($age >= 20){
	echo 'あなたは20歳以上です。';

}else{
	echo 'あなたは20歳未満です。';

}

if-elseif-else(複数の条件分岐)

1つの条件式だけでなく、複数の条件式を組み合わせることも可能です。

if(条件式1){
	//実行する処理

}elseif(条件式2){
	//実行する処理

}elseif(条件式3){
	//実行する処理

}else{
	//実行する処理

}

上から条件式を評価していきますが、全ての条件式が偽だった場合に最後のelseのブロック内の処理をします。

注意点として、条件式が真だった場合はそれより下の条件式の評価は行われないことです。もちろん処理もされません。

なお、最後のelse部分は必要さければ記述しなくても構いません。

switch文

変数の値を比較する条件式が複数あった場合、if文で記述すると以下のようになります。

$cat = 'エンタメ';
if($cat == 'ニュース'){
	echo 'カテゴリーはニュースです。';

}elseif($cat == '経済'){
	echo 'カテゴリーは経済です。';

}elseif($cat == 'エンタメ'){
	echo 'カテゴリーはエンタメです。';

}elseif($cat == 'スポーツ'){
	echo 'カテゴリーはスポーツです。';

}elseif($cat == 'IT・科学'){
	echo 'カテゴリーはIT・科学です。';
}

これは間違いではありません。

ですが、いろんな値と比較してそれぞれ一致する処理をさせる場合はswitch文を使うと便利です。

switch(式){
case 値1:
	//実行する処理
	break;

case 値2:
	//実行する処理
	break;

case 値3:
	//実行する処理
	break;

default:
	//どれにも該当しなかったときに実行する処理
}

switch文は式の値を評価し、caseの値と比較していきます。

もし一致する値があった場合にはその後に記述された処理を実行します。

「break」に達したら終了します。

「default」の後の処理は、式がどの「case」の値に一致しなかったときの処理を記述します。

「default」は必要なければ記述しなくても構いません。

$cat = 'エンタメ';
switch($cat){
case 'ニュース':
	echo 'カテゴリーはニュースです。';
	break;

case '経済':
	echo 'カテゴリーは経済です。';
	break;

case 'エンタメ':
	echo 'カテゴリーはエンタメです。';
	break;

case 'スポーツ':
	echo 'カテゴリーはスポーツです。';
	break;

case 'IT・科学':
	echo 'カテゴリーはIT・科学です。';
	break;

default:
	echo 'カテゴリーはその他です。';
}

三項演算子

三項演算子はPHPの中で、唯一ひとつで3つの項目を使用する演算子です。

条件式 ? 式A : 式B

条件式を評価して真であれば式Aを、偽であれば式Bを返します。

if-else文とは違って、結果として返すのは処理結果ではなく式を返します。

$name = '山田太郎';

if($name == '山田太郎') {
	echo '登録済みです。';

}else{
	echo '未登録です。';
}

if-else文では条件式の評価に対して処理の結果を返しました。

三項演算子の場合、次のように条件式の評価に対して式を返します。

$name = '山田太郎';

$msg = $name == '山田太郎' ? '登録済みです。' : '未登録です。';

echo $msg;

コピーできました!