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