【PHP入門】switch文による条件分岐


switch文による条件分岐

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


書き方

判定する値には数値と文字列が指定できます。
判定したい値と合致する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 "存在しない月です";
        }
    ?>
    

表示結果:
使用例のように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を使ったほうがわかりやすい場合もある。

  • このエントリーをはてなブックマークに追加

PAGE TOP