Developer

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

【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を使ったほうがわかりやすい場合もある。

PHP基礎 連載目次リンク

PHP基礎 連載目次