[英]Why does “1|2” == 1 return true in PHP?
为什么这段代码返回True而不是False?
"1|2" == 1
为什么不返回False?
注意:1 | 2是字符串。
您的字符串"1|2"
将转换为整数,以便与整数1进行比较。
根据PHP的类型转换规则 ,将字符串转换为整数会将字符串中的所有前导数字转换为第一个非数字(给出1
,忽略|2
因为|
是第一个非数字。
1 == 1
是真的
转换为数字时, "1|2"
变为1
因为转换处理字符串直到第一个非数字字符。 1 == 1
所以这是真的。 在==
比较期间,字符串将转换为数字
如果将数字与字符串进行比较或比较涉及数字字符串,则每个字符串将转换为数字,并且数字执行比较。
http://php.net/manual/en/language.operators.comparison.php
如果你想修复它,使用===
运算符,它也会检查类型
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.