为什么1 ==' 1,2'真正?

时间:2014-03-14 06:05:27

标签: php types int equals

很好奇PHP类型转换如何适用于这种情况。

var_dump(1 == '1,2') // boolean(true)

3 个答案:

答案 0 :(得分:7)

这是因为 1 在这里是一个整数,当它与字符串 1,2 进行比较时,此字符串将被转换为一个整数,该整数返回的 1

如何将字符串1,2转换为1?

echo int('1,2'); // prints 1 

因此,当与 1 进行比较时,显然会在true

上返回var_dump

来自PHP Docs ..(基本比较测试)

  

如果您将数字与字符串进行比较或比较涉及   数字字符串,然后每个字符串转换为一个数字和   比较用数字表示。

Source

答案 1 :(得分:4)

  1. 它被解释为:

    var_dump(1 === (int) '1,2');
    
  2. "1,2"投放到int将返回1,因为最后解析的数字之后的任何内容都会被切断(在这种情况下为,2)。

  3. 请记住,逗号(,)不是小数点分隔符,点(.)是:

    var_dump((float) '1,3', (float) '1.3');
    

    结果:

    (float) 1
    (float) 1.3
    

  4. 投射通常非常不直观,这就是为什么你应该几乎总是使用===运算符,它不会创建强制转换。

答案 2 :(得分:4)

如果使用==,php会将右侧值输入到左侧值。 在这种情况下,'1,2'将被输入到1并返回true。

即使var_dump( 1== "1dfuiekjdfdsfdsfdsfdsfsdfasfsadf" );也会返回true。