为什么“1 | 2”== 1在PHP中返回true?
你的字符串"1|2"
被强制转换为整数的比较整数1
据PHP's type casting rules,铸造字符串整数通吃领先的数字从字符串到第一个非数字(给1
,和忽略|2
因为|
是第一个非数字的。
1 == 1
为真
“1 | 2”是字符串! –
谢谢你的回答!如何解决它然后返回错误? –
如何解决它?重写你的逻辑是逻辑上返回一个假的东西(例如''1 | 2 == == 2'或'1 | 2 == 1') –
当转换成数"1|2"
变得1
因为该演员阵列会处理该字符串直到第一个非数字字符。 1 == 1
所以这是真的。如果比较的字符串数串期间==
比较
转换成数字或所述比较涉及 数字串,则每一个字符串被转换为数字和数值进行 比较。
http://php.net/manual/en/language.operators.comparison.php
如果你要修复它使用===
运营商也将检查类型
是反引号并在此弯引号部分? – Rizier123
不对不起! –
@ Rizier123你能解释一下吗? –