switch 文 は、if文と同じく条件により処理を分ける条件分岐がおこなえます。if文で条件分岐をしている場合に指定している条件が多いとソースコードが長くなり読みずらい場合があります。例えば以下のような場合です。

<?php

$val = 2;

if ($val == 0) {
	echo '変数 $val は、 0 です。';
} elseif($val == 1) {
	echo '変数 $val は、 1 です。';
} elseif($val == 2) {
	echo '変数 $val は、 2 です。';
} elseif($val == 3) {
	echo '変数 $val は、 3 です。';
} else {
	echo '変数 $val は、 1 2 3 以外です。';
}

?>
◆実行結果
変数 $val は、 2 です。

上記のように多数の条件を指定している if文 は、switch文を使用することでソースコードがとてもすっきりします。上記の処理を、シンプルなswitch文に書き換えてみます。

<?php

$val = 2;

switch ($val) {
	case 0:
		echo '変数 $val は、0 です。';
		break;
	case 1:
		echo '変数 $val は、 1 です。';
		break;
	case 2:
		echo '変数 $val は、 2 です。';
		break;
	case 3:
		echo '変数 $val は、 3 です。';
		break;
	default:
		echo '変数 $val は、 1 2 3以外です';
		break;
}

?>

◆実行結果
変数 $val は、 2 です。

switch文では式の値を評価し、caseの後に記述された値と順次比較していきます。一致する値があった場合には、if文と同じくその後に記述された処理を順次処理していきます。breakに達したらswitch文での処理を終了します。

switch文の default の処理は、式の値の評価なしに必ず処理されます。このため、case に該当しない場合は、breakに達しませんので、defaultに記述された処理が行われます。あらためてswitch文の書式を確認してみましょう。

◆switch文の書式

switch (式){
	case 値1:
 	 式が値1と等しい場合の処理をここに記述します。
	  break;

	case 値2:
	  式が値2と等しい場合の処理をここに記述します。
	  break;

	case 値3:
	  式が値3と等しい場合の処理をここに記述します。
	  break;

	default:
	  式が上記のいずれの値に、等しくない場合の処理をここに記述します。
}

break の記述は任意です。break を記述しない場合は、次の case 文 を実行しつづけます。

[対象]
PHP 5.x