Posted at

PHPのswitch文にうっかりtrueを通すとこうなる

More than 1 year has passed since last update.

やらかしには早い段階で気づいたものの原因がわかるまでちょっと困ったので備忘録がてら。


source


$flag = TRUE;
// 文字列を代入して判定に持ち込むハズが、道中の処理で失敗してtrueが入ってた。
// 動的型言語ってのはこれだから(ここで日記は途切れている)

switch($flag) {
case "delete":
echo "delete!";
break;
case "create":
echo "create...";
break;
default:
echo "show.";
}



result

> delete!


リロードのたびに通る処理部分だったので、そのたびにデータが消えていって謎だったのだけれど、$flagtrueの場合、どうあれ第一ケースに進入するってことなんですね。


fix


switch($flag) {
case "noop": // do not anything.
break;
case "create":


第一ケースにnoopをはさんだ。

そもそもの原因だった$flagの処理を直したのでbool型はもう来ないと思うけれど、念のため忘れないようにしておこうという感じ。

おしまい。