こんにちは、さるまりんです。
前回までは、if や else を使って、条件によって処理を分ける方法を見てきました。
「もしこうだったら、これをする」
「そうでなければ、こっちをする」
という書き方ですね。
今回は、条件分岐の別の書き方として、switch を見ていきます。
switch は、ざっくり言うと、
ひとつの値を見て、どの処理をするか分ける書き方
です。
if とまったく別のものというより、
条件分岐の書き方のひとつと思っておくと入りやすいです。
switchはどんな時に使う?
例えば、曜日によって表示するメッセージを変えたいとします。
if で書くと、こんな感じです。
$day = 'monday';
if ($day === 'monday') {
echo '週の始まりですね';
} elseif ($day === 'friday') {
echo 'もう少しで週末ですね';
} elseif ($day === 'sunday') {
echo 'ゆっくり休みたいですね';
} else {
echo 'いつもの一日ですね';
}
もちろん、これでも大丈夫です。
(土曜日はどうなの?という話はありますけどね)
ただ、この例では、ずっと $day の中身を見ています。
このように、
同じ値を見て、いくつかの処理に分けたい
という時に、switch を使うことがあります。
switchで書いてみる
同じ処理を switch で書くと、こうなります。
$day = 'monday';
switch ($day) {
case 'monday':
echo '週の始まりですね';
break;
case 'friday':
echo 'もう少しで週末ですね';
break;
case 'sunday':
echo 'ゆっくり休みたいですね';
break;
default:
echo 'いつもの一日ですね';
break;
}
if で書くのと、かなり見かけが違いますよね。
でも、やっていることはシンプルです。
switch ($day)
ここで、$day の中身を見ています。
そして、
case 'monday':
は、
$day が 'monday' だったら
という意味です。
case、break、default
switch では、この3つを見ておくと大丈夫です。
case
case は、「この場合は」という意味です。
case 'monday':
echo '週の始まりですね';
break;
この場合は、
$day が 'monday' だったら、
「週の始まりですね」と表示します。
break
break は、
ここでswitchを抜けます
という意味です。
break;
break を書かないと、下の case まで続いてしまうことがあります。
最初のうちは、
caseの処理を書いたら、基本的にbreakを書く
と思っておくと安心です。
default
default は、どの case にも当てはまらなかった時の処理です。
default:
echo 'いつもの一日ですね';
break;
if / else の else に近いものですね。
ifとswitchの使い分け
最初から、きっちり使い分けなくても大丈夫です。
まずは、こんな感覚でいいかなと思っています。
if は、条件を自由に書きたい時に使いやすいです。
$score = 85;
if ($score >= 80) {
echo 'いい感じです';
}
一方で、switch は、ひとつの値を見て分けたい時に使いやすいです。
$status = 'paid';
switch ($status) {
case 'paid':
echo '支払い済みです';
break;
case 'unpaid':
echo '未払いです';
break;
default:
echo '状態がわかりません';
break;
}
$status が何かによって処理を分ける、という形ですね。
今回のまとめ
今回は、switch について見てきました。
switch は、
ひとつの値を見て、処理を分けるための書き方
です。
switch で覚えておくのはこの3つです。
case:この値だった場合break:ここでswitchを抜けるdefault:どれにも当てはまらなかった場合
条件分岐には、if だけでなく、こういう書き方もあるんですね。
それでは、また!