与PHP中的字符串相比,为什么'IF'条件对0返回true?以及如何将字符串解析为零?

时间:2016-06-24 07:48:36

标签: php string variables if-statement

我遇到了以下我的网络应用程序发生的情况。我需要一个确切的理由和解决方案

<?php
$var = 0;
if ($var == "StringVal") {
    echo $var;
    echo "Wrong";
} else {
    echo "Right";
}
?>

这些代码必须打印

  

,但它打印

  

0Wrong

这个问题的可能性有多大?

2 个答案:

答案 0 :(得分:2)

根据official documentation

  

如果您将数字与字符串进行比较或比较涉及数字字符串,则每个字符串都会转换为数字,并且数字会进行比较。

所以var_dump(0 == "a");当Php尝试将“a”解析为数字时会返回true,如果解析失败,在这种情况下会发生,它返回0然后0等于0.要克服此比较也可以使用===输入。

希望这有帮助。

答案 1 :(得分:1)

不要在php中使用==进行比较。请改用===

通过这种方式,您可以执行类型检查,这将按预期工作。有关PHP类型比较表,请参阅here。你在那里看到“与==之间的松散比较” 0(int)和“php”(字符串)将返回true。这不是人们所期望的。