この式が PHP で true と評価されるのはなぜですか。
0 == " UNKNOWN"
文字列は比較のために int に強制され、その文字列の int 値は 0 であるためです。
http://php.net/manual/en/language.types.type-juggling.phpを参照してください。
2 つの変数を大まかに比較しています。その演算子を使用するための規則は、大まかな比較表で説明されています。
==
あなたの値の1つを他のものと一致するように型キャストします。
(int)" UNKNOWN"
0 を返します
(int)0
0 を返します
それで
0==" UNKNOWN"
はtrue
$string == " UNKNOWN";
var_dump((int)$string); //gives 0
そのため、true と評価されます。