0=="value is not zero!"
$x=0; $y="value is not zero!"; if($x==$y) print "why!?";
さて…
PHPでは比較演算子が比較する際に、一方が数値であれば数値に変換して比較するようだ。そして、数字でない文字列は0に変換される。
そう、このアルゴリズムによって 0 は数字以外のあらゆる文字列と一致する、つまり PHP はすべてを無に帰そうとするZEND(ゼウス=神のもじり)の陰謀だったんだよ!
な なんだってー! ,. -─- 、._ ,. -─v─- 、._ _ ,. ‐'´ `‐、 __, ‐'´ ヽ, ‐''´~ `´ ̄`‐、 / ヽ、_/)ノ ≦ ヽ‐'´ `‐、 / / ̄~`'''‐- 、.._ ノ ≦ ≦ ヽ i. /  ̄l 7 1 イ/l/|ヘ ヽヘ ≦ , ,ヘ 、 i ,!ヘ. / ‐- 、._ u |/ l |/ ! ! | ヾ ヾ ヽ_、l イ/l/|/ヽlヘト、 │ . |〃、!ミ: -─ゝ、 __ .l レ二ヽ、 、__∠´_ |/ | ! | | ヾ ヾヘト、 l !_ヒ; L(.:)_ `ー'"〈:)_,` / riヽ_(:)_i '_(:)_/ ! ‐;-、 、__,._-─‐ヽ. ,.-'、 /`゙i u ´ ヽ ! !{ ,! ` ( } ' (:)〉 ´(.:)`i |//ニ ! _/:::::::! ,,..ゝ! ゙! ヽ ' .゙! 7  ̄ | トy'/ _,,. -‐ヘ::::::::::::::ヽ、 r'´~`''‐、 / !、 ‐=ニ⊃ /! `ヽ" u ;-‐i´ ! \::::::::::::::ヽ `ー─ ' / ヽ ‐- / ヽ ` ̄二) /ヽト、 i、 \:::::::::::::::..、 ~" / ヽ.___,./ //ヽ、 ー
自分は結構PHPに詳しいと思ってたのだが、あまりに基本的とも言えるこれを知らなかった。これが原因のバグとかいっぱいありそう(;´д⊂)
(参考: http://jp2.php.net/manual/ja/types.comparisons.php )
(参考: http://carpia.hp.infoseek.co.jp/2ch_MMR/MMR-AA/AA-nandatte.htm )