PHP switch文のサンプル

PHPのswitch文のサンプルです。条件で処理を分岐する時に使用します。

目次 switch文とは / switch文のサンプル / HTMLにswitch文を書く時
  breakがない場合(フォールスルー)
  caseの後に条件を追加 / switch文の中でif文を使用

switch文とは

switch(条件){
  case 値 :
    処理
    break;
   ・・・
  default:
    処理
    break;
}
  • 条件の値とcaseの値が一致すれば、配下の処理が実行されます。
  • breakでswitch文を抜けます。breakがないと下の判定(case/default)に行ってしまいます。
  • defaultは、条件の値がどのcaseの値にも一致しない時に実行されます。省略可能ですが書いたほうが良いです。
  • 以下はPHPマニュアルのswitch文のリンクです。
    https://www.php.net/manual/ja/control-structures.switch.php

switch文のサンプル

<?php
$num1 = "2";

switch ($num1) {
	case "1":
		print "1つめ";
		break;
	case "2":
		print "2つめ"; //2つめが出力される
		break;
	default:
		print "3つめ";
}

8行目のcase "2"は変数の値と一致するのでその配下の処理が実行されます。
9行目の処理が実行されます。
10行目のbreakでswitch文を抜けます。

HTMLにswitch文を書く時

<?php $num = 2; ?>

<?php switch ($num):
	case "1": ?>
		<p>1つめ</p>
		<?php break; ?>
	<?php
	case "2": ?>
		<p>2つめ</p><!-- 出力される -->
		<?php break; ?>
	<?php
	default: ?>
		<p>3つめ</p>
<?php endswitch; ?>

3~14行目がswitch文です。
3行目のswitchの後ろには、コロン:がついています。
14行目は、endswitchがあります。switch文の終わりがわかりやすくなっています。
実行すると9行目が表示されます。5,13行目は表示されません。

breakがない場合(フォールスルー)

<?php
$a = "1";

switch($a){
	case "1":
		print "1つめ"; // 1つめが出力される

	case "2":
		print "2つめ"; //2つめが出力される
		break;
	default:
		print "3つめ";
}

7行目は、breakがありません。
5行目のcase "1"の処理の後、8行目のcase"2"の処理も実行されます。
フォールスルー(fall through/落ちる)と呼ばれます。
breakを書き忘れたのかわかりづらいので使用しないほうが良いです。

caseの後に条件を追加

<?php
$a = 8;

switch($a){
	case $a < 5:
		print("1つめ");
		break;
	case $a < 10:
		print("2つめ");// 2つめが出力される
		break;
	default:
		print "3つめ";
}

5,8行目はcaseの後で比較(<)を行っています。

switch文の中でif文を使用

<?php
$a = 3;

switch($a){
	case 3:
		if ($a % 2 == 0) {
			print("偶数");
		} else {
			print("奇数"); // 奇数が出力される
		}
		break;
	default:
		print "その他";
}

6行目はswitch文の中のcaseの後にif文を使用しています。
%は、割り算の余りを求めます。

関連の記事

PHP if文 条件分岐を行うサンプル
PHP while文とdo…while文のサンプル

△上に戻る