我有以下表达式:
if (!empty($forums) && count($forums) == 1)
根据评估的顺序,它应该检查的第一件事是$forums
是否不为空。如果它为空,那么当它命中&&
时,它应该立即计算为false。此时,它应该退出if语句,甚至不尝试执行count()
。
但是,产生了以下错误:
ErrorException: Countable count():参数必须是数组或实现E_WARNING的对象
堆栈跟踪显示它试图执行count(NULL)
。如果$forums
的计算结果为NULL
;那么为什么表达式要继续,而不是退出If语句?
发布于 2018-08-26 05:25:37
检查您的变量是否真的是PHP可以计算的变量。如果你只测试它是否为空,它甚至可能是一个对象或PHP无法计数的其他东西。与其测试empty()
,我建议您:
if (is_array($forums) && count($forums) == 1) {
// do stuff.
}
如果它是一个数组,它不能为空,所以你甚至不需要检查它。
发布于 2018-08-26 03:42:28
不确定$forms是否为数组。你应该使用is_array来检查它是否是一个数组。
https://codebrace.com/editor/b03bb92ab
<iframe width="100%" height="300" src="//codebrace.com/embed/b03bb92ab/?12px&wordwrap&php&result&xcode&focus=php" allowtransparency="true" allowfullscreen="true" style="background-color:transparent; overflow: hidden;margin: 0;" title="" frameborder="0"></iframe>
https://stackoverflow.com/questions/52020262
复制相似问题