【发布时间】:2013-02-25 23:24:59
【问题描述】:
你知道为什么<?= count(false) ?> 返回1吗?
【问题讨论】:
你知道为什么<?= count(false) ?> 返回1吗?
【问题讨论】:
【讨论】:
$count = $var != false ? count($var) : 0; 怎么样?
因为false也是一个值,如果count()没有得到数组而是一个有效的变量,它返回true,即1。
$result = count(null);
// $result == 0
$result = count(false);
// $result == 1
【讨论】:
true。 count 期待一个数组,如果 var 不是一个数组,它就会被转换成一个数组。由于false 是一个有效值,它被强制转换为一个包含一个元素的数组:一个值为false 的元素。 justinsomnia.org/2007/12/in-php-countfalse-returns-1
记住这一点的好方法:
【讨论】:
在我看来,PHP 正在阻止人们使用count() 来确定元素是数组还是对象。他们有专门的函数(is_array(),is_object()),天真地使用count() 并检查false 条件来确定数组或对象可能很诱人。相反,PHP 使非对象、非数组返回 1(这是真实的),因此不能以这种方式天真地使用此方法(因为 0 是空数组/对象的有效、虚假结果) .
这可能是在您描述的情况下选择函数返回值的原因。
【讨论】: