■switch文による条件分岐
前回のif文に続き、switch文について説明していきます。
switch文も条件分岐の書き方の一つです。
switch文
まずは構文です。
判定する値には数値と文字列が指定できます。
判定したい値と合致するcaseに記述された処理が実行されます。
判定したい値と合致するcaseがなかった場合、defaultに記述された処理が実行されます。
breakをつけないと、当てはまったcase以下すべてのcaseの処理が実行されてしまうので注意が必要です。
逆に言えば一番最後のcaseにはbreakをつけなくても問題ありません。
switch(判定する値) {
case 値1:
処理1;
break;
case 値2:
処理2;
break;
default:
処理3;
}
そして使用例は次のようになります。
<?php
$month = 10;
switch ($month){
case 3: case 4: case 5:
echo "春";
break;
case 6: case 7: case 8:
echo "夏";
break;
case 9: case 10: case 11:
echo "秋";
break;
case 12: case 1: case 2:
echo "冬";
break;
default:
echo "存在しない月です";
}
?>
表示結果:5より大きい
使用例のようにcaseを並列に複数指定することもできます。
■if文との使い分け
よく質問を受けるのがif文とswitch文の使い分けです。
基本的にはif文ですべて事足りるのですが、場合によってはswitch文を使用した方が見やすくなる場合もあります。
ポイントは判定の対象です。
if文は基本的にboolean型の値で判定を行うのに対し、switch文は整数か文字列で判定を行います。
つまり、「ある変数また式がどんな値なのか」で処理を分岐する場合にswitch文を用います。
例をあげてみます。
$a = 3;
if($a == 1) {
echo '1です';
} elseif($a == 2) {
echo '2です';
} elseif($a == 3) {
echo '3です';
}
このプログラムでは$aが1か2か3かで処理を分岐しています。
これが上で述べた「ある変数また式がどんな値なのか」で処理を分岐するということです。
このような場合はswitchに書き換えることができます。
$a = 3;
switch($a) {
case 1:
echo '1です';
break;
case 2:
echo '2です';
break;
case 3:
echo '3です';
break;
}
まとめ
ある変数または式の値だけで分岐する場合はswitch文が使用できる。
if文ですべて書くことができるが、場合によってはswitchを使ったほうがわかりやすい場合もある。
