目的
- PHPのswitch文の書き方をまとめる
書き方の例
- 下記にswitch文の書き方を記載する。
switch (変数){
case 変数に入っている可能性のある値A:
変数に値Aが入っている時の処理;
brake;
case 変数に入っている可能性のある値B:
変数に値Bが入っている時の処理;
brake;
default:
変数に値Aと値B以外のものが入っていた時の処理;
brake;
}
より具体的な書き方の例
- 変数
flag
に入っている値で処理を変更したい時の処理を下記に記載する。
switch ($flag){
case 0:
echo "flagには0が格納されています。";
break;
case 1:
echo "flagには1が格納されています。";
break;
default:
echo "flagには0と1以外が格納されています。"
break;
}
- 信号機の色で出力を変更するcase文を使用した処理を記載する。
- 変数
$signal
に格納された値を元にメッセージを変更する処理を下記に記載する。
switch ($signal) {
case "red":
echo "stop";
break;
// 条件が二つある場合は並列して記載できる
case "blue":
case "green":
echo "go";
break;
case "yellow":
echo "caution";
break;
default:
echo "no signal";
break;
}
型厳密に比較する
実はswitch文の値比較は===
の型も含めた厳密比較ではなく、==
となっている。
つまり、先のswitch文で下記の様なことが起きてしまう。
switch ($flag){
case 0:
echo "flagには0が格納されています。"; // $flagに数値の0か文字列の'0'が入っていた場合
break;
case 1:
echo "flagには1が格納されています。"; // $flagに数値の1か文字列の'1'が入っていた場合
break;
default:
echo "flagには0と1以外が格納されています。"
break;
}
ただ、コードを書いているとswitch文で型も含めた厳密比較をしたい場合も当たり前のように存在する。
そういうときは下記のようにすることで解消する。下記は$flag
が数値の0か1かをチェックしたい場合なので$flag === 0
や$flag === 1
のようにしている。文字列の0か1かをチェックしたい場合は$flag === '0'
や$flag === '1'
になる。
switch (true){
case $flag === 0:
echo "flagには数値の0が格納されています。";
break;
case $flag === 1:
echo "flagには数値n1が格納されています。";
break;
default:
echo "flagには0と1以外が格納されています。"
break;
}