PHP比較演算子の落とし穴

("abcdef" == 0)    true
("abcdef" === 0)   false
("1" == 0)         false
("0" == 0)         true
("abcdef" == "0")  false

なぜ、最上段の("abcdef" == 0)がtrueになるのか。これが即座にわかったらPHPマニア。決してプログラマーとして優秀だとかそういうわけじゃない、ただのPHPマニア。
答えはちゃんとPHPマニュアルにも載っている。
比較演算子

If you compare an integer with a string, the string is converted to a number.

だそうだ。数値型と文字列型を比較する場合、文字列は数字に変換されるというルールがある。使いやすいだけのPHPの代償なんだろうね、こういうところが。かくして"abcdef"は0に変換され、比較の結果はtrueが返ってくる。