PHPのswitch文を使った条件処理の書き方を完全ガイド!初心者でもわかる使い方
新人
「PHPで条件によって処理を変えたいのですが、if文以外にも方法はありますか?」
先輩
「ありますよ!PHPにはswitch
文という便利な条件分岐の方法があります。」
新人
「switch文ってどのようなものですか?」
先輩
「それでは、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文の違い
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文の基本的な書き方(サンプルコードと解説)
前回の説明で、switch文はif文に比べて簡潔に書けることが分かりましたね。ここでは、switch文の基本的な書き方を詳しく解説します。
基本的な構文は以下のようになります。
<?php
$color = "青";
switch ($color) {
case "赤":
echo "選択した色は赤です。";
break;
case "青":
echo "選択した色は青です。";
break;
case "緑":
echo "選択した色は緑です。";
break;
default:
echo "選択された色がありません。";
}
?>
出力結果:
選択した色は青です。
このコードでは、変数$color
が「青」なので、case "青"
の処理が実行され、「選択した色は青です。」と表示されます。
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文を使った具体的な例
それでは、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の複数指定)
場合によっては、複数の条件で同じ処理を実行したいことがあります。switch
文では、case
を並べることで、同じ処理を実行することができます。
複数のcaseを指定する例
以下のプログラムでは、"土曜日"と"日曜日"を「週末」として扱い、"月曜日"~"金曜日"を「平日」として処理しています。
<?php
$day = "土曜日";
switch ($day) {
case "月曜日":
case "火曜日":
case "水曜日":
case "木曜日":
case "金曜日":
echo "今日は平日です。";
break;
case "土曜日":
case "日曜日":
echo "今日は週末です!";
break;
default:
echo "無効な曜日です。";
}
?>
出力結果:
今日は週末です!
このように、case
を並べて書くことで、複数の条件に対して同じ処理を実行できます。
7. switch文を使った実践的なコード(ユーザーの役割による画面表示の変更)
Webアプリケーションでは、ユーザーの役割(管理者、一般ユーザー、ゲストなど)によって異なる画面を表示することがよくあります。
ユーザーの役割に応じたページ表示
以下のプログラムでは、ユーザーの役割に応じて表示するメッセージを変えています。
<?php
$role = "ゲスト";
switch ($role) {
case "管理者":
echo "管理者向けのダッシュボードを表示します。";
break;
case "ユーザー":
echo "一般ユーザー向けのホームページを表示します。";
break;
case "ゲスト":
echo "ゲスト向けの案内ページを表示します。";
break;
default:
echo "アクセス権限がありません。";
}
?>
出力結果:
ゲスト向けの案内ページを表示します。
このように、ユーザーの役割ごとに異なるページを表示する際に、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文の理解が深まり、実践的に活用できるようになります。