条件分岐はプログラミングの基本ですが、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-else | switch文 |
---|---|---|
条件の種類 | 比較演算子・論理演算子で柔軟に書ける | 特定の値との一致が中心 |
可読性 | 複雑な条件も書けるが長くなりやすい | 値ごとに分岐するときは見やすい |
使用例 | 数値の範囲チェック、複雑な条件分岐 | 値の一致チェック(文字列や数値) |
まとめ
switch
文は複数の条件分岐をスッキリ書ける構文break;
を忘れると処理がフォールスルーするので注意switch(true)
を使えば範囲判定も可能- 単純な値の一致なら
switch
、複雑な条件ならif-elseif
を使い分けるのがおすすめ