PHP入門:複数の条件分岐 — switch文の使い方

条件分岐はプログラミングの基本ですが、if-elseif-else ばかりだとコードが長くなりがちです。そんなときに役立つのが switch 文です。この記事では、PHPの switch 文の基本構文から応用的な使い方、if 文との違いまでをサンプルコード付きで解説します。

switch文の基本構文

switch 文は、与えられた式の値を複数の候補と照らし合わせて分岐します。
構文は次のようになります:

<?php
$color = "red";

switch ($color) {
    case "red":
        echo "赤です";
        break;

    case "blue":
        echo "青です";
        break;

    case "green":
        echo "緑です";
        break;

    default:
        echo "色が一致しません";
}

ポイント

  • switch の括弧内の値を、各 case の値と比較する。
  • 一致した case の処理を実行し、break; で終了する。
  • break; を書かないと処理が次の case に流れる(フォールスルー)。
  • どの case にも当てはまらない場合は default が実行される。

フォールスルーの挙動

break; を忘れると処理が続いてしまいます。次の例を見てください。

<?php
$fruit = "apple";

switch ($fruit) {
    case "apple":
        echo "リンゴ";
    case "banana":
        echo "バナナ";
    default:
        echo "その他";
}

出力結果は リンゴバナナその他 となります。
通常は break; を入れるのが安全です。

数値での条件分岐

数値を判定する場合も switch 文が使えます。

<?php
$day = 3;

switch ($day) {
    case 1:
        echo "月曜日";
        break;
    case 2:
        echo "火曜日";
        break;
    case 3:
        echo "水曜日";
        break;
    default:
        echo "不明な曜日";
}

条件式を使った switch(true) パターン

通常の switch は「値の一致」でしか判定できませんが、工夫すると「範囲」も判定できます。

<?php
$score = 85;

switch (true) {
    case ($score >= 90):
        echo "とても良くできました!";
        break;

    case ($score >= 70):
        echo "合格です。";
        break;

    default:
        echo "残念、不合格です。";
}

このように switch(true) と書くと、case に条件式を置けるため、if-elseif の代わりとして使えます。

if文とswitch文の違い

特徴if-elseif-elseswitch文
条件の種類比較演算子・論理演算子で柔軟に書ける特定の値との一致が中心
可読性複雑な条件も書けるが長くなりやすい値ごとに分岐するときは見やすい
使用例数値の範囲チェック、複雑な条件分岐値の一致チェック(文字列や数値)

まとめ

  • switch 文は複数の条件分岐をスッキリ書ける構文
  • break; を忘れると処理がフォールスルーするので注意
  • switch(true) を使えば範囲判定も可能
  • 単純な値の一致なら switch、複雑な条件なら if-elseif を使い分けるのがおすすめ

-PHP
-