カテゴリ: PHP 更新日: 2025/10/04

PHPのswitch文を使った条件処理の書き方を完全ガイド!初心者でもわかる使い方

PHP の switch 文を使った条件処理の書き方
PHP の switch 文を使った条件処理の書き方

新人と先輩の会話形式で理解しよう

新人

「PHPで条件によって処理を変えたいのですが、if文以外にも方法はありますか?」

先輩

「ありますよ!PHPにはswitch文という便利な条件分岐の方法があります。」

新人

「switch文ってどのようなものですか?」

先輩

「それでは、switch文の基本から見ていきましょう!」

-

1. switch文とは?

1. switch文とは?
1. switch文とは?

PHPのswitch文は、複数の条件をチェックして処理を分岐させるための構文です。

通常、if文を使って複数の条件を処理すると、コードが長くなりがちですが、switch文を使うと、より簡潔に書けます。

基本的な構文は以下のようになります。


<?php
$fruit = "りんご";

switch ($fruit) {
    case "りんご":
        echo "選択したのはりんごです。";
        break;
    case "バナナ":
        echo "選択したのはバナナです。";
        break;
    case "オレンジ":
        echo "選択したのはオレンジです。";
        break;
    default:
        echo "選択された果物がありません。";
}
?>

出力結果:


選択したのはりんごです。

このコードでは、変数$fruitの値が「りんご」なので、case "りんご"の処理が実行され、「選択したのはりんごです。」と表示されます。

2. if文とswitch文の違い

2. if文とswitch文の違い
2. if文とswitch文の違い

if文とswitch文はどちらも条件分岐に使いますが、どのような場合にどちらを使えばよいのでしょうか?

if文を使うべき場合

  • 比較演算子(==>< など)を使うとき
  • 複数の条件を組み合わせたいとき(&&||を使う場合)

<?php
$score = 85;

if ($score >= 90) {
    echo "成績はAです。";
} elseif ($score >= 80) {
    echo "成績はBです。";
} else {
    echo "成績はCです。";
}
?>

出力結果:


成績はBです。

このように、条件を比較して分岐する場合はif文の方が適しています。

switch文を使うべき場合

  • 1つの変数の値に応じて異なる処理を行うとき
  • 複数の条件を簡潔に書きたいとき

<?php
$day = "金曜日";

switch ($day) {
    case "月曜日":
        echo "今週の始まりですね!";
        break;
    case "金曜日":
        echo "もうすぐ週末です!";
        break;
    case "日曜日":
        echo "今日はゆっくり休みましょう!";
        break;
    default:
        echo "普通の日です。";
}
?>

出力結果:


もうすぐ週末です!

このように、1つの変数に対する処理を分岐するときはswitch文の方がスッキリと書けます。

3. switch文の基本的な書き方(サンプルコードと解説)

3. switch文の基本的な書き方(サンプルコードと解説)
3. switch文の基本的な書き方(サンプルコードと解説)

前回の説明で、switch文はif文に比べて簡潔に書けることが分かりましたね。ここでは、switch文の基本的な書き方を詳しく解説します。

基本的な構文は以下のようになります。


<?php
$color = "青";

switch ($color) {
    case "赤":
        echo "選択した色は赤です。";
        break;
    case "青":
        echo "選択した色は青です。";
        break;
    case "緑":
        echo "選択した色は緑です。";
        break;
    default:
        echo "選択された色がありません。";
}
?>

出力結果:


選択した色は青です。

このコードでは、変数$colorが「青」なので、case "青"の処理が実行され、「選択した色は青です。」と表示されます。

4. break文とdefaultの役割

4. break文とdefaultの役割
4. break文とdefaultの役割

switch文では、各caseの後にbreak文を記述するのが一般的です。

break文がない場合、条件に一致した後も、次のcaseの処理が実行されてしまいます。

breakがない場合の動作


<?php
$fruit = "りんご";

switch ($fruit) {
    case "りんご":
        echo "選択したのはりんごです。";
    case "バナナ":
        echo "選択したのはバナナです。";
    case "オレンジ":
        echo "選択したのはオレンジです。";
}
?>

出力結果:


選択したのはりんごです。選択したのはバナナです。選択したのはオレンジです。

このように、case "りんご"の処理が実行された後、break文がないため、次のcaseも続けて実行されてしまいます。

この問題を防ぐために、各caseの最後にbreak文を入れましょう。

defaultの役割

defaultは、どのcaseにも該当しない場合に実行される処理を記述する部分です。

defaultを設定することで、予期しない値が入ったときにも適切な処理を行えます。


<?php
$animal = "猫";

switch ($animal) {
    case "犬":
        echo "あなたの好きな動物は犬ですね!";
        break;
    case "うさぎ":
        echo "あなたの好きな動物はうさぎですね!";
        break;
    default:
        echo "指定された動物はリストにありません。";
}
?>

出力結果:


指定された動物はリストにありません。

このように、defaultを使うことで、リストにない値が入力された場合でもエラーにならず、適切なメッセージを表示できます。

-

5. switch文を使った具体的な例

5. switch文を使った具体的な例
5. switch文を使った具体的な例

それでは、switch文を使ってもう少し実用的なプログラムを書いてみましょう。

例1: ユーザーが選択したメニューに応じた処理

飲食店のメニューを選択し、それに応じた価格を表示するプログラムです。


<?php
$menu = "カレー";

switch ($menu) {
    case "ハンバーグ":
        echo "ハンバーグの値段は800円です。";
        break;
    case "カレー":
        echo "カレーの値段は700円です。";
        break;
    case "ラーメン":
        echo "ラーメンの値段は900円です。";
        break;
    default:
        echo "選択されたメニューはありません。";
}
?>

出力結果:


カレーの値段は700円です。

このように、ユーザーが選択したメニューに応じて価格を表示することができます。

例2: ユーザーの入力に応じたメッセージの表示

次に、ユーザーが入力した曜日に応じて異なるメッセージを表示するプログラムを作成します。


<?php
$day = "水曜日";

switch ($day) {
    case "月曜日":
        echo "週の始まりですね!";
        break;
    case "金曜日":
        echo "もうすぐ週末です!";
        break;
    case "日曜日":
        echo "今日はゆっくり休みましょう!";
        break;
    default:
        echo "普通の日ですね。";
}
?>

出力結果:


普通の日ですね。

このように、特定の値に応じて異なるメッセージを表示する場合にもswitch文が便利です。

例3: ユーザーの役割に応じた処理

最後に、Webアプリケーションでユーザーの役割(管理者、一般ユーザー、ゲスト)に応じて異なるメッセージを表示する例を見てみましょう。


<?php
$role = "管理者";

switch ($role) {
    case "管理者":
        echo "管理者ページにアクセスできます。";
        break;
    case "ユーザー":
        echo "一般ユーザー向けのページです。";
        break;
    case "ゲスト":
        echo "ゲスト向けのページです。";
        break;
    default:
        echo "不明なユーザーです。";
}
?>

出力結果:


管理者ページにアクセスできます。

このように、switch文を使うことで、ユーザーの種類に応じた処理を簡単に分岐できます。

6. switch文で複数の条件をまとめる方法(caseの複数指定)

6. switch文で複数の条件をまとめる方法(caseの複数指定)
6. switch文で複数の条件をまとめる方法(caseの複数指定)

場合によっては、複数の条件で同じ処理を実行したいことがあります。switch文では、caseを並べることで、同じ処理を実行することができます。

複数のcaseを指定する例

以下のプログラムでは、"土曜日"と"日曜日"を「週末」として扱い、"月曜日"~"金曜日"を「平日」として処理しています。


<?php
$day = "土曜日";

switch ($day) {
    case "月曜日":
    case "火曜日":
    case "水曜日":
    case "木曜日":
    case "金曜日":
        echo "今日は平日です。";
        break;
    case "土曜日":
    case "日曜日":
        echo "今日は週末です!";
        break;
    default:
        echo "無効な曜日です。";
}
?>

出力結果:


今日は週末です!

このように、caseを並べて書くことで、複数の条件に対して同じ処理を実行できます。

7. switch文を使った実践的なコード(ユーザーの役割による画面表示の変更)

7. switch文を使った実践的なコード(ユーザーの役割による画面表示の変更)
7. switch文を使った実践的なコード(ユーザーの役割による画面表示の変更)

Webアプリケーションでは、ユーザーの役割(管理者、一般ユーザー、ゲストなど)によって異なる画面を表示することがよくあります。

ユーザーの役割に応じたページ表示

以下のプログラムでは、ユーザーの役割に応じて表示するメッセージを変えています。


<?php
$role = "ゲスト";

switch ($role) {
    case "管理者":
        echo "管理者向けのダッシュボードを表示します。";
        break;
    case "ユーザー":
        echo "一般ユーザー向けのホームページを表示します。";
        break;
    case "ゲスト":
        echo "ゲスト向けの案内ページを表示します。";
        break;
    default:
        echo "アクセス権限がありません。";
}
?>

出力結果:


ゲスト向けの案内ページを表示します。

このように、ユーザーの役割ごとに異なるページを表示する際に、switch文が便利です。

8. PHPのswitch文を活用するための練習問題

8. PHPのswitch文を活用するための練習問題
8. PHPのswitch文を活用するための練習問題

最後に、PHPのswitch文を活用するための練習問題をいくつか紹介します。

問題1: 季節に応じたメッセージを表示する

ユーザーが入力した月(1~12)に応じて、以下のようなメッセージを表示するプログラムを作成してください。

  • 3月~5月 → 「春です!」
  • 6月~8月 → 「夏です!」
  • 9月~11月 → 「秋です!」
  • 12月~2月 → 「冬です!」

<?php
$month = 4; 

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 "無効な月です。";
}
?>

問題2: ショッピングサイトの割引判定

購入金額によって異なる割引率を適用するプログラムを作成してください。

  • 1万円以上 → 「20%割引」
  • 5000円以上 → 「10%割引」
  • 5000円未満 → 「5%割引」

<?php
$price = 7500;

switch (true) {
    case ($price >= 10000):
        echo "20%割引です!";
        break;
    case ($price >= 5000):
        echo "10%割引です!";
        break;
    default:
        echo "5%割引です!";
}
?>

問題3: ユーザーのログイン状態を判定

以下の条件に基づいて、ユーザーのログイン状態を判定するプログラムを作成してください。

  • "ログイン済み" → 「ようこそ、ユーザーさん!」
  • "未ログイン" → 「ログインしてください。」

<?php
$status = "未ログイン";

switch ($status) {
    case "ログイン済み":
        echo "ようこそ、ユーザーさん!";
        break;
    case "未ログイン":
        echo "ログインしてください。";
        break;
    default:
        echo "不明な状態です。";
}
?>

これらの練習問題を解くことで、switch文の理解が深まり、実践的に活用できるようになります。

まとめ

まとめ
まとめ

PHPのswitch文は、特定の変数に応じて複数の処理を分岐させる際に非常に便利な構文です。特に「ある1つの値」に対して多くの選択肢がある場合には、if文よりもswitch文の方がコードの可読性と保守性に優れています。本記事では、switch文の基本的な構文から、break文やdefaultの使い方、さらには複数のcaseをまとめる方法、ユーザーの役割や曜日・月・金額などに応じた実践的な活用例まで幅広く学びました。

また、switch(true)という応用テクニックを使えば、if-elseif文に近いロジックをswitchで実現できる柔軟な使い方も可能です。これにより、複雑な条件分岐でも読みやすく整ったコードを書くことができます。実際にWebアプリケーションなどの現場では、ユーザーの権限による画面制御や、曜日・時間帯による表示内容の切り替えなど、多くの場面でswitch文が活躍します。

以下は、switch文の応用例として、「支払い方法」に応じて処理を分けるサンプルです。


<?php
$payment = "クレジットカード";

switch ($payment) {
    case "現金":
        echo "現金でお支払いありがとうございます。";
        break;
    case "クレジットカード":
        echo "クレジットカード決済を処理します。";
        break;
    case "電子マネー":
        echo "電子マネーでの支払いが選択されました。";
        break;
    default:
        echo "選択された支払い方法は利用できません。";
}
?>

このように、ユーザーの選択肢に応じたロジックを簡潔に制御できるのがswitch文の大きな強みです。条件分岐が必要な場面では、if文との使い分けを意識して、より最適なコードを書くように心がけましょう。

先生と生徒の振り返り会話

新人

「switch文って、最初は難しそうに見えましたが、慣れると便利ですね!」

先輩

「そうだね!特に値が限定されているような場合は、if文よりも読みやすくなるから、積極的に使うといいよ。」

新人

breakを忘れると大変なことになるのも実感しました……」

先輩

「うん、それがswitch文でよくある落とし穴だね。defaultも忘れずに書くようにすると、予期しない入力にも対応できて安全だよ。」

新人

「練習問題で季節や金額の条件も試せたので、自信がつきました!」

先輩

「その調子!次はswitch文と関数を組み合わせて、もっと実用的なコードにも挑戦してみよう。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

PHPのswitch文はif文と何が違うのですか?使い分けの基準がわかりません。

PHPのswitch文は、1つの変数の値に応じて処理を分けるときに使います。複雑な条件や範囲比較にはif文、単一の値の一致に応じた分岐にはswitch文が適しています。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介
人気記事
No.1
PHP&Python記事人気No1
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
PHP&Python記事人気No2
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.3
PHP&Python記事人気No3
Pythonのリストを辞書に変換する方法(dict() / zip())
No.4
PHP&Python記事人気No4
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
-