PHP将“0”视为空?

时间:2011-12-22 09:04:58

标签: php

我遇到了php处理“0”的问题。

我在两台不同的机器上运行以下脚本:

$a = "0";
if ($a) {
    echo("helo");
}

1)本地机器 - > PHP 5.2.17      - >它将“0”视为有效并打印'helo'

2)服务器 - > PHP 5.3.6      - >它将“0”视为空/假,并且不会打印'helo'

这是由于php配置(如果是,什么配置)或php版本?

4 个答案:

答案 0 :(得分:5)

这就是它应该如何。 PHP在布尔上下文中解释字符串。 "0"相当于实际0。 (另见http://www.php.net/manual/en/types.comparisons.php

你打算测试的可能是:

if (strlen($a)) {

答案 1 :(得分:2)

根据{{​​3}},

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))这样你会得到明确的答案。

我希望这有帮助!