PHPはこういう変数の使い方ができる。
変数$resは結果コード0~4またはエラーメッセージを格納する。
この変数の値によって条件分岐する処理を書く。
function echo_res($res){
switch($res) {
case 0;
echo "res = 0\n";
break;
case 1;
echo "res = 1\n";
break;
case 2;
echo "res = 2\n";
break;
case 3;
echo "res = 3\n";
break;
case "エラー";
echo "res = エラー\n";
break;
}
}
実行のコードはこんな感じ。
<?php
$res = 0;
var_dump($res);
echo_res($res);
$res = 1;
var_dump($res);
echo_res($res);
$res = 2;
var_dump($res);
echo_res($res);
$res = 3;
var_dump($res);
echo_res($res);
$res = "エラー";
var_dump($res);
echo_res($res);
?>
結果はこんな感じ
int(0)
res = 0
int(1)
res = 1
int(2)
res = 2
int(3)
res = 3
string(6) "エラー"
res = 0
$resの値がエラーメッセージの時に、0と判定されてしまっている。
var_dump(
"エラー" == 0, // true
intval("エラー") // 0
);
こういうことみたいです。
思った通りの動作にしたかったら、こんな感じ。
function echo_res($res){
switch($res) {
case "0";
echo "res = 0\n";
break;
case "1";
echo "res = 1\n";
break;
case "2";
echo "res = 2\n";
break;
case "3";
echo "res = 3\n";
break;
case "エラー";
echo "res = エラー\n";
break;
}
}
もしくは
function echo_res($res){
switch($res) {
case 0;
echo "res = 0\n";
break;
case 1;
echo "res = 1\n";
break;
case 2;
echo "res = 2\n";
break;
case 3;
echo "res = 3\n";
break;
case -1; //-1はエラーコード
echo "res = エラー\n";
break;
}
}
エラーメッセージを$resに入れない(´・∀・`)