【6日でできるPHP入門】switch 文

 プログラムで複数の選択肢から処理を分岐させたいとき、if~else if~else文で書くこともできますが、値によって分岐が多い場合には「switch文」を使うと記述がすっきりします。
この記事では、switch文の基本構造や使い方、注意点について、具体例を交えて解説します。

1.switch文の基本構造

1.1. switch文とは?

switch文は、指定した値(式)の結果によって複数の処理から該当するものだけを実行できる制御構造です。

書式

switch (値) {
    case 値1:
        // 値1に一致したときの処理
        break;
    case 値2:
        // 値2に一致したときの処理
        break;
    // ... 必要な分だけcaseを記述
    default:
        // どのcaseにも一致しないときの処理
}
構成要素役割
caseそれぞれの比較値を指定し、値が一致すれば実行
break該当処理の実行後、switch文から抜けるために必要
defaultどのcaseにも一致しなかった場合に実行(省略可)

2.実践サンプルと解説

2.1. シンプルなswitch文の例

サンプル1:曜日による挨拶メッセージ

ファイル名: lesson31_1.php

<?php
$day = "土曜日";
echo "{$day}のあいさつ:";

switch($day){
    case "月曜日":
        echo "新しい週の始まりです!";
        break;
    case "金曜日":
        echo "週末まであと少し!";
        break;
    case "土曜日":
    case "日曜日":
        echo "良い週末を!";
        break;
    default:
        echo "今日もがんばりましょう!";
}
?>

実行結果

解説

  • 「土曜日」と「日曜日」は同じ処理をまとめて記述可能
  • breakがないと次のcaseに処理が流れる(フォールスルー)

3.switch文の応用とポイント

3.1. breakとdefaultの注意点

  • break:caseの処理を終えたらswitch文全体を抜ける。必須。
  • default:どのcaseにも一致しない場合の処理。省略も可能。

サンプル2:breakを省略した場合

ファイル名: lesson31_2.php

<?php
$score = 100;
switch ($score) {
    case 100:
        echo "満点です!";
    case 90:
        echo "とてもよくできました。";
        break;
    default:
        echo "がんばりましょう。";
}
?>

実行結果

解説

  • case 100に一致するとbreakがないため、case 90の処理も続けて実行される

3.2. if文との違い

  • switch文は「値がいくつかの特定値と等しいか」を判定する場合に最適
  • 複雑な条件(範囲比較など)はif~else ifを使う

4.多数の選択肢をすっきり書く

サンプル3:メニュー選択

ファイル名: lesson31_3.php

<?php
$menu = 2;
echo "選択した番号:{$menu} → ";
switch ($menu) {
    case 1:
        echo "カレーライス";
        break;
    case 2:
        echo "ハンバーグ";
        break;
    case 3:
        echo "サラダ";
        break;
    default:
        echo "選択肢にありません";
}
?>

実行結果

まとめ

  • switch文は複数の値ごとに分岐処理を記述でき、分岐が多いときに便利
  • caseとbreakの組み合わせに注意し、defaultで予期せぬ値にも対応
  • if文と使い分けて、より読みやすい分岐処理を心がけましょう

実際にswitch文を使ってさまざまな値の分岐を試してみることで、使い方のコツをつかみましょう!