条件分岐はプログラミングの基本ですが、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を使い分けるのがおすすめ