首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP没有从左到右计算表达式吗?

PHP没有从左到右计算表达式吗?
EN

Stack Overflow用户
提问于 2018-08-26 02:46:28
回答 2查看 88关注 0票数 0

我有以下表达式:

代码语言:javascript
复制
if (!empty($forums) && count($forums) == 1)

根据评估的顺序,它应该检查的第一件事是$forums是否不为空。如果它为空,那么当它命中&&时,它应该立即计算为false。此时,它应该退出if语句,甚至不尝试执行count()

但是,产生了以下错误:

ErrorException: Countable count():参数必须是数组或实现E_WARNING的对象

堆栈跟踪显示它试图执行count(NULL)。如果$forums的计算结果为NULL;那么为什么表达式要继续,而不是退出If语句?

EN

回答 2

Stack Overflow用户

发布于 2018-08-26 05:25:37

检查您的变量是否真的是PHP可以计算的变量。如果你只测试它是否为空,它甚至可能是一个对象或PHP无法计数的其他东西。与其测试empty(),我建议您:

代码语言:javascript
复制
if (is_array($forums) && count($forums) == 1) {
    // do stuff.
}

如果它是一个数组,它不能为空,所以你甚至不需要检查它。

票数 1
EN

Stack Overflow用户

发布于 2018-08-26 03:42:28

不确定$forms是否为数组。你应该使用is_array来检查它是否是一个数组。

https://codebrace.com/editor/b03bb92ab

代码语言:javascript
复制
<iframe width="100%" height="300" src="//codebrace.com/embed/b03bb92ab/?12px&amp;wordwrap&amp;php&amp;result&amp;xcode&amp;focus=php" allowtransparency="true" allowfullscreen="true" style="background-color:transparent; overflow: hidden;margin: 0;" title="" frameborder="0"></iframe>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52020262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档