カテゴリ: PHP 更新日: 2025/05/29

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文の理解が深まり、実践的に活用できるようになります。

コメント
コメント投稿は、ログインしてください

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

カテゴリの一覧へ
新着記事
Pythonのエラーメッセージの読み方!よくあるエラーと解決方法
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
Pythonの条件式でNoneを判定する方法!is None vs == None の違い
Pythonのpass文とは?一時的なコードブロックをスキップする方法
人気記事
No.1
Java&Spring記事人気No1
PHPの配列をソートする方法!sort, rsort, asort, ksortの使い方を丁寧に解説します!
No.2
Java&Spring記事人気No2
PHPとは?初心者向けにわかりやすく解説
No.3
Java&Spring記事人気No3
PHPの関数(function)の基本を完全ガイド!初心者でもわかる使い方
No.4
Java&Spring記事人気No4
PHP の文字列の基本操作(連結・切り出し・長さ)の使い方
-