在PHP中,字符串" 1"等于字符串" + 1"除非你做一个严格的比较(===)。
echo ("1" == "+1") ? "equals" : "not equals"; // result: "equals"
我不想进行严格的比较,因为字符串" 1"在这种情况下,可能会以整数1的形式提供。我不能intval()
来区分它们,因为它们都返回1,我不能is_numeric()
来区分它们,因为它们都返回true。
所以,请问两个问题:
除了通过strval()
将输入转换为字符串并使用严格比较之外,还有什么方法可以区分这些吗?
这是PHP中的错误或预期行为吗?原因似乎不是数学的(" 2"不等于" 1 + 1"例如,虽然" 2"确实等于" + 2&#34)。我对这背后的推理感到好奇。
答案 0 :(得分:3)
使用==
代替===
时,会使用松散比较。
在比较无与伦比的类型时,这通常会导致使用truthyness的类型
在这里查看手册以查看比较表 http://php.net/manual/en/types.comparisons.php
即使未提及"+1"
,也会以'-1'
如果您不希望发生这种情况,则需要使用===