PHP 处理“0”为空?
我遇到了 php 以不同方式处理“0”的问题。
我在两台不同的机器上运行以下脚本:
$a = "0";
if ($a) {
echo("helo");
}
1)本地机器-> PHP 5.2.17 ->它将“0”视为有效并打印“helo”
2) 服务器 -> PHP 5.3.6 ->它将“0”视为空/假,并且不会打印“helo”
这是由于 php 配置(如果是,是什么配置)或 php 版本所致?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
事情本来就是这样的。 PHP 在布尔上下文中解释字符串。那里的
“0”
相当于实际的0
。 (另请参阅http://www.php.net/manual/en/types.comparisons.php)您想要测试的可能是:
That's how it is supposed to. PHP interprets strings in boolean context. The
"0"
there is equivalent to an actual0
. (See also http://www.php.net/manual/en/types.comparisons.php)What you meant to test for is probably:
if($a)
应为FALSE
,根据 文档。它也应该像您本地计算机上的那样。您确定在本地计算机上,0 或其他内容后面没有空格吗? (“0
”将为TRUE
。)if($a)
should beFALSE
, as per the documentation. It should also be like that on your local machine. Are you sure that on the local machine, you don't have a space after the 0 or something? ("0<space>
" would beTRUE
.)对我来说听起来很奇怪,我认为“0”是假的,你可以查看 这里
Sound weird to me, I thought "0" was false, you can review here
PHP 可能会将“0”插入为 false,因为它相当于 null/false/0。
然而,它也可以将其插入为字符串“0”。因此 if 语句将返回 true,但是,我认为这将是一个错误,除非您键入将其强制转换为 (string)。
就像马里奥说的那样,检查 strlen($a) 或检查 if(!empty($a) ) 这样你就会得到明确的答案。
我希望这有帮助!
PHP may interporate "0" as false as it would be equivilent to null/false/0.
However, it also may interporate it as a string of "0". Thus the if statement would return true, however, I think that would be a bug unless you type cast it to (string).
Like Mario said, check for the strlen($a) or check if( !empty($a) ) that way you will get your definitive answer.
I hope this helps!