PHP レッスン — レッスン 8-2 — switch 演算子
前のレッスンでは、if 演算子に触れました。if 演算子は、条件が真かどうかを確認し、その確認結果に応じて必要な動作を実行できるようにします。
では、10 回の確認を行い、その確認結果に応じて 10 の動作のうちの 1 つを実行する必要があると想像してみましょう。もちろん、これも if で書けます:
<?php
if($x == 1){
// 動作
}
if($x == 2){
// 動作
}
if($x == 3){
// 動作
}
if($x == 4){
// 動作
}
if($x == 5){
// 動作
}
if($x == 6){
// 動作
}
if($x == 7){
// 動作
}
if($x == 8){
// 動作
}
if($x == 9){
// 動作
}
if($x == 10){
// 動作
}
?>
この方法でも動作しますが、このような確認は SWITCH 演算子で書くほうがよいです。
PHP switch
switch 演算子は、多くの条件のもとで式の値を確認できるようにします。上で示した例を switch を使って作り直しましょう:
<?php
switch ($x){
case 1:
// 動作
break;
case 2:
// 動作
break;
case 3:
// 動作
break;
case 4:
// 動作
break;
case 5:
// 動作
break;
case 6:
// 動作
break;
case 7:
// 動作
break;
case 8:
// 動作
break;
case 9:
// 動作
break;
case 10:
// 動作
break;
default:
// 他の条件が合わなかった場合の動作
}
?>
先に言ったとおり、両方の例は同じように動作します。ただ switch の場合、$x の値が 1 から 10 に等しくならないときに働く default を追加しました。
switch の構文が何で構成されているか見てみましょう。まず switch 演算子自体が来て、その後の括弧の中に確認される式が来ます。確認される式には、テキスト形式でも数値形式でも変数を入れられます。つまり数値でも文字列でもよく、例えば:
<?php
switch ($x){
case 'Hello':
break;
case 'Bye':
break;
}
?>
確認される式の記述の後に波括弧が来ます。波括弧の中に、式の取り得る値と動作を書きます。
<?php
switch ($x){
case 'Hello': // 取り得る値
print $x; // 動作
break; // switch の実行の終わり
case 2:
$x++;
break;
}
?>
値の確認は case の形で書き、取り得る値自体は、文字列なら引用符で、数値なら引用符なしで書きます。取り得る値の後にコロンを置きます。
次に、条件が真のときに実行する必要な動作を書きます。case と動作の終わりの後に break; を置く必要があります。これは switch の動作の終わりを意味します。
すべての case の後に default を使えます。他の case が働かなかった場合、または break; を置き忘れて switch の実行が続いた場合に働きます。ここから 2 つの結論が導けます:
1. 動作の終わりの後に break; を置き忘れないこと。
2. break; 演算子は default の動作の後には置かなくてもよい。いずれにせよ、それは条件確認の最後の演算子だからです。
以下は switch 演算子のフローチャートです:

説明として言うと、ここでは数 D を割った余りと、週の初めから何日経ったかを得て、それが今日の曜日になります。
<?php
// $D は月曜からの日数
$x = $D % 7;
switch ($x){
case 1:
print '月曜日';
break;
case 2:
print '火曜日';
break;
case 3:
print '水曜日';
break;
case 4:
print '木曜日';
break;
case 5:
print '金曜日';
break;
case 6:
print '土曜日';
break;
case 7:
print '日曜日';
break;
}
?>