PHP字符串 - int比较

时间:2012-02-27 16:06:27

标签: php

任何人都知道为什么在php

var_dump( "cat" == 0 );

评估为真?我也意识到了:

var_dump( "cat" === 0 );

有预期的结果,但好奇为什么第一种情况是真的。这也是php 5.3。

4 个答案:

答案 0 :(得分:2)

字符串被隐式转换为整数。请参阅documentation

  

如果字符串以有效数字数据开头,则这将是使用的值。否则,该值将为0(零)。

答案 1 :(得分:1)

因为你是隐式地将字符串转换为整数,并且因为字符串不包含数字,所以它被转换为0

答案 2 :(得分:1)

PHP手册中有一个comparison table类型,它可以让您了解在比较两种不同数据类型的变量时会发生什么。

你的第一个例子('松散'比较,因为它也不检查两个操作数的数据类型)隐式地将左边的字符串转换为整数。由于它不以数字开头,因此字符串将转换为整数0,等于为整数0。

您的第二个示例不仅会比较值,还会比较类型。由于类型不同,因此比较为假。

答案 3 :(得分:-1)

“cat”作为整数玩杂耍为0,这就是为什么它是真的

但是如果你输入

var_dump( "01" == 0 );

它本来是假的,因为1不等于0

相关问题