"608E-4234"
は浮動小数点数形式であるため、比較すると数値にキャストされます。
608E-4234
272E-3063
どちらも小さfloat(0)
すぎるためです。
==
phpでは、
数値を文字列と比較する場合、または比較に
数値文字列が含まれる場合、各文字列は数値に変換され、数値として比較が実行されます。
http://php.net/manual/en/language.operators.comparison.php
注意:
==
と の両方を持つ JavaScript の動作はどう===
ですか?
答えは、動作が PHP とは異なるということです。JavaScript では、同じ型の 2 つの値を比較する場合、==
は と同じ===
であるため、2 つの同じ型の値の比較では型キャストは発生しません。
JavaScript の場合:
608E-4234 == 272E-3063 // true
608E-4234 == "272E-3063" // true
"608E-4234" == 272E-3063 // true
"608E-4234" == "272E-3063" // false (Note: this is different form PHP)
したがって、JavaScript では、結果の型がわかっている場合は、1 文字を保存する==
代わりに使用できます。===
たとえば、typeof
演算子は常に文字列を返すため、次のように使用できます
typeof foo == 'string'
代わりにtypeof foo === 'string'
害はありません。