任何人都知道为什么PHPPHP字符串 - INT比较
var_dump("cat" == 0);
结果为true?此外,我意识到:
var_dump("cat" === 0);
有预期的结果,但是好奇,为什么第一种情况是真实的。这也是PHP 5.3。
任何人都知道为什么PHPPHP字符串 - INT比较
var_dump("cat" == 0);
结果为true?此外,我意识到:
var_dump("cat" === 0);
有预期的结果,但是好奇,为什么第一种情况是真实的。这也是PHP 5.3。
PHP手册中有一个类型comparison table,它让您了解比较两种不同数据类型的变量时会发生什么。
您的第一个示例(“松散”比较,因为它不会检查两个操作数的数据类型)会将左侧的字符串隐式转换为整数。由于它不是以数字开头,字符串被转换为整数0,其中等于为整数0.
第二个示例不仅比较了值,还比较了类型。由于类型不同,所以比较是错误的。
该字符串被隐式转换为整数。请参阅documentation:
如果字符串以有效的数字数据开头,则这将是使用的值。否则,该值将为0(零)。
因为你是隐式铸造字符串为整数,并作为字符串不包含数字就被转换为0
“猫”是杂耍,以0作为一个整数,这就是为什么它是真的
,但如果你输入
var_dump("01" == 0);
这本来是假的,因为1不是等于0
你的表达实际上计算结果为true。 'cat1'转换为'0'。该字符串需要用一个整数开始,并将其转换为该整数。 – Josh 2012-02-27 16:22:11
@Josh谢谢你的抬头 – user544262772 2012-02-27 19:40:16
NVM找到答案在这里: http://stackoverflow.com/questions/9257685/weird-php-string-integer-comparison-and-conversion – SS44 2012-02-27 16:08:38