Developer

【PHP基礎】switch文による条件分岐
2020.10.29
Lv1

【PHP基礎】switch文による条件分岐

■switch文による条件分岐

前回のif文に続き、switch文について説明していきます。
switch文も条件分岐の書き方の一つです。

switch文

まずは構文です。
判定する値には数値と文字列が指定できます。
判定したい値と合致するcaseに記述された処理が実行されます。
判定したい値と合致するcaseがなかった場合、defaultに記述された処理が実行されます。
breakをつけないと、当てはまったcase以下すべてのcaseの処理が実行されてしまうので注意が必要です。
逆に言えば一番最後のcaseにはbreakをつけなくても問題ありません。

1
2
3
4
5
6
7
8
9
10
switch(判定する値) {
    case 値1:
        処理1;
        break;
    case 値2:
        処理2;
        break;
    default:
        処理3;
}

そして使用例は次のようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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文を用います。
例をあげてみます。

1
2
3
4
5
6
7
8
9
$a = 3;
if($a == 1) {
    echo '1です';
} elseif($a == 2) {
    echo '2です';
} elseif($a == 3) {
    echo '3です';
}

このプログラムでは$aが1か2か3かで処理を分岐しています。
これが上で述べた「ある変数また式がどんな値なのか」で処理を分岐するということです。
このような場合はswitchに書き換えることができます。

1
2
3
4
5
6
7
8
9
10
11
12
13
$a = 3;
switch($a) {
    case 1:
        echo '1です';
        break;
    case 2:
        echo '2です';
        break;
    case 3:
        echo '3です';
        break;
}

まとめ

ある変数または式の値だけで分岐する場合はswitch文が使用できる。
if文ですべて書くことができるが、場合によってはswitchを使ったほうがわかりやすい場合もある。

PHP基礎 連載目次リンク

PHP基礎 連載目次