Php 使用'==';

Php 使用'==';,php,comparison,Php,Comparison,我使用“==”对字符串进行了一些测试。我知道比较字符串“==”不是一种方法,但我想解决一个奇怪的行为 我将遵循此页面中的PHP文档:。这是我做的测试 <?php var_dump( "100" == "1e2" ); //outputs boolean true var_dump( (int) "100" ); //int 100 var_dump( (int) "1e2" ); //int 1 ?> 文档中说,当我们将字符串与数字进行比较时,PHP首先将

我使用“==”对字符串进行了一些测试。我知道比较字符串“==”不是一种方法,但我想解决一个奇怪的行为

我将遵循此页面中的PHP文档:。这是我做的测试

<?php 
   var_dump( "100" == "1e2" ); //outputs boolean true
   var_dump( (int) "100" ); //int 100
   var_dump( (int) "1e2" ); //int 1
?> 

文档中说,当我们将字符串与数字进行比较时,PHP首先将字符串转换为数字,但当我将“100”和“1e2”转换为数字时,它们并不相等。比较结果应为布尔值false


为什么会有这种奇怪的行为?谢谢

并非所有数字都是整数
1e2
是一个浮点(正好可以表示为整数,但不能直接转换为整数)。尝试转换为
float
s而不是
int
s:


不等于

从“键入杂耍”页面

如果任一操作数是浮点,则两个操作数都作为浮点计算,结果将是浮点。否则,操作数将被解释为整数,结果也将是整数


为了进一步说明这一点,以下是文档中的解释。“如果字符串不包含任何字符“.”、“e”或“e”,并且数值符合整数类型限制(由PHP_INT_MAX定义),则该字符串将作为整数计算。在所有其他情况下,它将作为浮点计算。”顺便提一下,这就是为什么通常最好使用
===
而不是
=
,因为结果更容易预测!