您知道为什么<?= count(false) ?>
会返回1
吗?
答案 0 :(得分:24)
答案 1 :(得分:9)
因为false
也是一个值,并且如果count()没有获得数组而是有效变量,则返回true
1
。
$result = count(null);
// $result == 0
$result = count(false);
// $result == 1
答案 2 :(得分:2)
在脑海中记住这个的好方法:
答案 3 :(得分:1)
在我看来,PHP正在阻止人们使用count()
来确定元素是数组还是对象。他们有专门的功能(is_array()
,is_object()
),可能很想天真地使用count()
并检查false
条件来确定数组或对象。相反,PHP使非对象,非数组返回1
(这是真实的),因此这种方法不能以这种方式被天真地使用(因为0
是一个有效的,虚假的结果为空阵列/对象)。
这可能是你所描述的情境中函数返回值选择背后的原因。