为什么“1 | 2”== 1在PHP中返回true?

时间:2015-07-28 11:29:26

标签: php

为什么此代码返回True而不是False?

"1|2" == 1

为什么不返回False?

注意:1 | 2是字符串。

2 个答案:

答案 0 :(得分:2)

您的字符串"1|2"会转换为整数,以便与整数1进行比较。

根据PHP's type casting rules,将字符串转换为整数会将字符串中的所有前导数字转换为第一个非数字(提供1,并忽略|2,因为|是第一个非数字。

1 == 1是真的

答案 1 :(得分:1)

转换为数字"1|2"变为1,因为转换处理字符串直到第一个非数字字符。 1 == 1所以这是真的。在==比较期间将字符串转换为数字

  

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

http://php.net/manual/en/language.operators.comparison.php

如果要修复它,请使用===运算符,该运算符也会检查类型