「なんだいつもの話か」などと思わないように。
文字列 と 0を == で比較すると、何故かtrueが返ってくる。
整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が 数値に変換され、 数値としての比較を行います。これらのルールは、 switch 文にも適用されます。 === あるいは !== による比較では型変換は発生しません。 この場合は値だけでなく型も比較します。
ってさ。なんだこれは。ふざけているのだろうか。
だから、下のコードもこのようになるし、
<?php var_dump("テスト" === 0); // bool(false) var_dump("テスト" == 0); // bool(true)
function ymjn($a) { switch($a) { case 0: // $aが文字列だったら、これより下へは辿りつけない。 return 'ウホッ'; case 1: return 'イイ男'; default: return ''; } }