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が返ってくる。