暗黙に型変換される演算子

ちょっと違うなぁ。bool を number として評価するコンテキストではないよ。
詳しくは以下。

「false == 0」の場合、第1オペランドが bool というケースになるので、0 が bool に変換され false と評価されるわけですな。
で、この辺は2日の夜にも話したことなんだけど。PerlPHP (と他のいくつかのスクリプト言語)は文字列を数値として評価したり、数値を文字列として評価したりできるんだよね。例えば「'1' + '1'」が2になって、「1 . 1」が '11' になるとかそういうの。これらの例では PerlPHP も演算の種類によって評価の仕方を変える。
で、Perl では比較演算は文字列と数値で演算子が違う。数値として評価して欲しいなら「==」を使うし、文字列として評価して欲しいなら「eq」を使う。
対して、PHP ではそんなことはなくて、上記のリンクに書かれているように、良く分からない規則に従い型変換がされてはまるというオチが待っているという。
結論としては、PHP では「==」の使用は禁止して、「===」を使用するのが良い、ということにしたい。