PHP 条件式
if 分岐式
分岐式はCの構文に非常によく似ています。
単純な2分岐ならそれでいいですが、3分岐などになったらどうしますか? その時は3っつ連ねるだけですよー
switch 分岐式
先ほどは if で分岐をしましたが、2つ3っつの時はそれでも良いとして、分岐が5とか10とかになったらどうしましょうか・・・ elseif をそれだけ書いていくのは非常に面倒ですよね。 コードの可読性も悪化してしまいます。
では switch で処理をしてみましょう。
ここの例では数値を判定していますが、これは文字列でも問題なく評価ができます。
?を使った分岐
if と switch の2つで分岐式は十二分です。
基本は YES か NO かですから。 ですがちょっと違う書き方を覚えると、これから先ちょっと楽が出来るかもしれません。 という事で if の違った書き方です。
今度は ok が表示されるはずです。 ? の前の部分が条件です。
そして ? から : までが条件が真の場合処理される部分、: から ; までが偽の場合に処理される部分になります。
なんの事は無い、if else 構文を一行にまとめただけの事です。 ですが文章的には飛躍的にコンパクトになったかと思います。
分岐式はCの構文に非常によく似ています。
<?php
$a = 1;
if($a > 5){
echo("Over 5 ");
}else{
echo("Under 5");
}
?>
馬鹿馬鹿しいコードかもしれませんが、一応解説を・・・ if の式が判定されて { } 内が処理されます。
else で続ければ if 式が偽(この場合は 5 以下)の時の処理がなされます。
ここでは変数 $a は必ず 1 が代入されているので
Under 5が必ず表示されるはずです。
単純な2分岐ならそれでいいですが、3分岐などになったらどうしますか? その時は3っつ連ねるだけですよー
<?php
$a = 1;
if($a > 5){
echo("Over 5 ");
}elseif($a < 2){
echo("Over 2 ");
}else{
echo("etc..");
}
?>
という具合に elseif で分岐を増やせば問題ありません。或は if の中に if を入れ子(ネスト)にして分岐させるのも良いでしょう。
そこらへんは個々人のコーディングの好みによりますかね。
switch 分岐式
先ほどは if で分岐をしましたが、2つ3っつの時はそれでも良いとして、分岐が5とか10とかになったらどうしましょうか・・・ elseif をそれだけ書いていくのは非常に面倒ですよね。 コードの可読性も悪化してしまいます。
では switch で処理をしてみましょう。
<?php
$a = 5;
switch($a){
case 0:
echo("value is 0");
break;
case 1:
echo("value is 1");
break;
case 2:
echo("value is 2");
break;
case 3:
echo("value is 3");
break;
case 4:
echo("value is 4");
break;
default:
echo("value is etc");
break;
}
?>
上記は switch で分岐を行わせた例です。
switch直後の()内の変数を評価します。
結果は case のラベル毎に分岐します。ここの例では数値を判定していますが、これは文字列でも問題なく評価ができます。
<?php
$a = 5;
switch($a){
case 0:
case 1:
case 2:
case 3:
echo("value is Under 3");
break;
case 4:
echo("value is 4");
break;
default:
echo("value is etc");
break;
}
?>
このような書き方の場合、$a が 0,1,2,3 の場合は全て同じ処理を行います。
なんとなく判りますよね。 break で構文を抜け出します。
default ラベルは、どのcase条件にも合致しなかった場合に処理される部分になります。
?を使った分岐
if と switch の2つで分岐式は十二分です。
基本は YES か NO かですから。 ですがちょっと違う書き方を覚えると、これから先ちょっと楽が出来るかもしれません。 という事で if の違った書き方です。
<? $a = 10; 5 > $a ? $str = "ok" : $str = "no"; echo($str); ?>ここで画面に表示されるのは no です。 試しに $a に代入する値を 4 にしてみましょう。
今度は ok が表示されるはずです。 ? の前の部分が条件です。
そして ? から : までが条件が真の場合処理される部分、: から ; までが偽の場合に処理される部分になります。
なんの事は無い、if else 構文を一行にまとめただけの事です。 ですが文章的には飛躍的にコンパクトになったかと思います。
2008年 9月 28日ドキュメント作成
2008年 9月 28日ドキュメント更新