我遇到了php处理“0”的问题。
我在两台不同的机器上运行以下脚本:
$a = "0";
if ($a) {
echo("helo");
}
1)本地机器 - > PHP 5.2.17 - >它将“0”视为有效并打印'helo'
2)服务器 - > PHP 5.3.6 - >它将“0”视为空/假,并且不会打印'helo'
这是由于php配置(如果是,什么配置)或php版本?
答案 0 :(得分:5)
这就是它应该如何。 PHP在布尔上下文中解释字符串。 "0"
相当于实际0
。 (另见http://www.php.net/manual/en/types.comparisons.php)
你打算测试的可能是:
if (strlen($a)) {
答案 1 :(得分:2)
if($a)
应为FALSE
。它也应该像你本地的机器上那样。你确定在本地机器上,0之后没有空格吗? (“0<space>
”将为TRUE
。)
答案 2 :(得分:0)
对我来说听起来很奇怪,我认为“0”是假的,你可以查看here
答案 3 :(得分:0)
PHP可能会将“0”插入为false,因为它与null / false / 0等效。
但是,它也可以将其插入为“0”字符串。因此if语句将返回true,但是,我认为这将是一个bug,除非你输入它(string)。
就像马里奥说的那样,检查strlen($ a)或检查是否(!空($ a))这样你会得到明确的答案。
我希望这有帮助!