使用'=='进行PHP字符串比较

Jos*_*iel 5 php comparison

我使用'=='对字符串进行了一些测试.我知道比较字符串'=='不是这样,但我想解决一个奇怪的行为.

我正在关注此页面中的PHP文档:http://www.php.net/manual/en/language.operators.comparison.php.这是我做的测试

<?php 
   var_dump( "100" == "1e2" ); //outputs boolean true
   var_dump( (int) "100" ); //int 100
   var_dump( (int) "1e2" ); //int 1
?> 
Run Code Online (Sandbox Code Playgroud)

文档说,当我们将字符串与数字进行比较时,PHP首先将字符串转换为数字,但是当我将"100"和"1e2"转换为数字时它们不相等.比较应该输出布尔值false.

为什么这种奇怪的行为?谢谢!

ick*_*fay 6

并非所有数字都是整数.1e2是一个float(恰好可以表示为整数,但不能直接转换为整数).尝试转换为floats而不是ints:

<?php 
   var_dump( "100" == "1e2" ); // bool(true)
   var_dump( (float) "100" );  // float(100)
   var_dump( (float) "1e2" );  // float(100)
?> 
Run Code Online (Sandbox Code Playgroud)