数値として文字列が評価された時、結果の値と型は次のように定義されます。
文字列の中に ‘.’ や ‘e’、’E’ といった文字が含まれず、 数値が integer 型の範囲内 (PHP_INT_MAX で定義されています) におさまる場合は integer として評価されます。それ以外の場合は、すべて float として評価されます。
文字列の最初の部分により値が決まります。文字列が、 有効な数値データから始まる場合、この値が使用されます。その他の場合、 値は 0 (ゼロ) となります。
http://www.php.net/manual/ja/language.types.string.php#language.types.string.conversion
phpは数値と文字列が比較された場合、文字列は「0」として扱われるんだと。普通に考えて「0==文字列」で比較してtrueになるなんて思わねぇだろ\(^o^)/
文字列として比較する場合は、「strcmp($str1,$str2)」を使った方が無難。