I did a few tests with strings using '=='. I know to compare strings using '==' is not the way, but there is a weird behavior I want to solve.
I'm following the PHP documentation on page Comparison Operators. This is the test I did:
<?php
var_dump( "100" == "1e2" ); // Outputs boolean true
var_dump( (int) "100" ); // int 100
var_dump( (int) "1e2" ); // int 1
?>
The documentation says when we compare strings with numbers, PHP first converts the string to numbers, but when I convert '100' and '1e2' to numbers they are not equal. The comparison should outputs boolean false.
Why is this weird behavior?
Not all numbers are integers. 1e2
is a float (that happens to be representable as an integer, but is not directly convertible to an integer). Try converting to float
s rather than int
s:
<?php
var_dump( "100" == "1e2" ); // bool(true)
var_dump( (float) "100" ); // float(100)
var_dump( (float) "1e2" ); // float(100)
?>