我遇到了以下我的网络应用程序发生的情况。我需要一个确切的理由和解决方案
<?php
$var = 0;
if ($var == "StringVal") {
echo $var;
echo "Wrong";
} else {
echo "Right";
}
?>
这些代码必须打印
右
,但它打印
0Wrong
这个问题的可能性有多大?
答案 0 :(得分:2)
如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。
所以var_dump(0 == "a");
当Php尝试将“a”解析为数字时会返回true,如果解析失败,在这种情况下会发生,它返回0然后0等于0.要克服此比较也可以使用===
输入。
希望这有帮助。
答案 1 :(得分:1)
不要在php中使用==
进行比较。请改用===
。
通过这种方式,您可以执行类型检查,这将按预期工作。有关PHP类型比较表,请参阅here。你在那里看到“与==之间的松散比较” 0(int)和“php”(字符串)将返回true。这不是人们所期望的。