【PHP基礎】switch文による条件分岐
■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を使ったほうがわかりやすい場合もある。