アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

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」)


うーん、過去のコードにバグがないか不安になってきた。