为什么计数(假)返回1?

时间:2013-03-10 20:57:58

标签: php count

您知道为什么<?= count(false) ?>会返回1吗?

4 个答案:

答案 0 :(得分:24)

指定的行为:

  

如果var不是数组或具有已实现Countable的对象   界面,1将被退回。

根据http://php.net/manual/en/function.count.php

答案 1 :(得分:9)

因为false也是一个值,并且如果count()没有获得数组而是有效变量,则返回true 1

$result = count(null);
// $result == 0

$result = count(false);
// $result == 1

答案 2 :(得分:2)

在脑海中记住这个的好方法:

  • count(false)基本上与:
  • 相同
  • count(“一个布尔”),因此结果有“ONE”布尔值。

答案 3 :(得分:1)

在我看来,PHP正在阻止人们使用count()来确定元素是数组还是对象。他们有专门的功能(is_array()is_object()),可能很想天真地使用count()并检查false条件来确定数组或对象。相反,PHP使非对象,非数组返回1(这是真实的),因此这种方法不能以这种方式被天真地使用(因为0是一个有效的,虚假的结果为空阵列/对象)。

这可能是你所描述的情境中函数返回值选择背后的原因。