PHPのゆるやかな比較の怖さを改めて思い知るの巻
if (0 == "-") { return true; } else { return false; }
これがtrueになったので「!?」となりました。
「0 == ""」や「0 == null」がtrueになるのは知っていましたが…。
一体どういうことなのかを調べてみると、
こういうケースでは文字列をint化して比較することになるので
「(int)"-"」→「0」として扱われることになるようです。
まあ、言われてみれば確かにそうか…。
なので「0 == "1abc"」は成立しないし(「(int)1abc」は「1」)
「1 == "01abc"」なんかは成立するわけですね。(「(int)01abc」も「1」)
うーん、過去のコードにバグがないか不安になってきた。