"608E-4234"
is the float number format, so they will cast into number when they compares.
608E-4234
and 272E-3063
will both be float(0)
because they are too small.
For ==
in php,
If you compare a number with a string or the comparison involves
numerical strings, then each string is converted to a number and the
comparison performed numerically.
http://php.net/manual/en/language.operators.comparison.php
Attention:
What about the behavior in javascript which also has both ==
and ===
?
The answer is the behavior is different from PHP. In javascript, if you compare two value with same type, ==
is just same as ===
, so type cast won't happen for compare with two same type values.
In 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)
So in javascript, when you know the type of the result, you could use ==
instead of ===
to save one character.
For example, typeof
operator always returns a string, so you could just use
typeof foo == 'string'
instead of typeof foo === 'string'
with no harm.