【On to PHP】switchってなに?

こんにちは、さるまりんです。

前回までは、ifelse を使って、条件によって処理を分ける方法を見てきました。

「もしこうだったら、これをする」
「そうでなければ、こっちをする」

という書き方ですね。

今回は、条件分岐の別の書き方として、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 / elseelse に近いものですね。


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 だけでなく、こういう書き方もあるんですね。

それでは、また!