PHP 处理“0”为空?

发布于 2024-12-22 16:47:07 字数 289 浏览 0 评论 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 版本所致?

I have encounteed an issue with php treating "0" differently.

I run following script on 2 different machines:

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

1) Local Machine -> PHP 5.2.17
-> it treated "0" as valid and print the 'helo'

2) Server -> PHP 5.3.6
-> it treated "0" as empty/false and won't print the 'helo'

Is this due to the php configuration (if yes, what configuration) or php version?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

蓝礼 2024-12-29 16:47:07

事情本来就是这样的。 PHP 在布尔上下文中解释字符串。那里的“0”相当于实际的0。 (另请参阅http://www.php.net/manual/en/types.comparisons.php)

您想要测试的可能是:

if (strlen($a)) {

That's how it is supposed to. PHP interprets strings in boolean context. The "0" there is equivalent to an actual 0. (See also http://www.php.net/manual/en/types.comparisons.php)

What you meant to test for is probably:

if (strlen($a)) {
美羊羊 2024-12-29 16:47:07

if($a) 应为 FALSE,根据 文档。它也应该像您本地计算机上的那样。您确定在本地计算机上,0 或其他内容后面没有空格吗? (“0”将为TRUE。)

if($a) should be FALSE, 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 be TRUE.)

灰色世界里的红玫瑰 2024-12-29 16:47:07

对我来说听起来很奇怪,我认为“0”是假的,你可以查看 这里

Sound weird to me, I thought "0" was false, you can review here

标点 2024-12-29 16:47:07

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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文