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

问题描述:

为什么此代码返回True而不是False?为什么“1 | 2”== 1在PHP中返回true?

"1|2" == 1 

为什么不返回False?

关注:1 | 2是字符串。

+1

是反引号并在此弯引号部分? – Rizier123

+0

不对不起! –

+0

@ Rizier123你能解释一下吗? –

你的字符串"1|2"被强制转换为整数的比较整数1

PHP's type casting rules,铸造字符串整数通吃领先的数字从字符串到第一个非数字(给1,和忽略|2因为|是第一个非数字的。

1 == 1为真

+0

“1 | 2”是字符串! –

+0

谢谢你的回答!如何解决它然后返回错误? –

+0

如何解决它?重写你的逻辑是逻辑上返回一个假的东西(例如''1 | 2 == == 2'或'1 | 2 == 1') –

当转换成数"1|2"变得1因为该演员阵列会处理该字符串直到第一个非数字字符。 1 == 1所以这是真的。如果比较的字符串数串期间==比较

转换成数字或所述比较涉及 数字串,则每一个字符串被转换为数字和数值进行 比较。

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

如果你要修复它使用===运营商也将检查类型