为什么count(false)在PHP中返回1?

为什么count(false)在PHP中返回1?,php,Php,既然count(null)==0,那么count(false)==1有什么意义呢 计数-对数组中的所有元素或对象中的某些元素进行计数。 - 因为布尔是基本体,而不是数组或可数,所以这就没有什么意义了 count返回元素数false是一个元素(布尔值),但是null什么都不是,null不是值 请注意,您可以通过将变量(例如数组中的项)设置为null来销毁该变量: $a = array(1,2,3); $a[1] = null; var_dump(isset($a[1])); 您将获得false,

既然
count(null)==0,那么
count(false)==1
有什么意义呢

计数-对数组中的所有元素或对象中的某些元素进行计数。 -


因为布尔是基本体,而不是数组或
可数
,所以这就没有什么意义了

count
返回元素数
false
是一个元素(布尔值),但是
null
什么都不是,
null
不是值

请注意,您可以通过将变量(例如数组中的项)设置为
null来销毁该变量:

$a = array(1,2,3);
$a[1] = null;
var_dump(isset($a[1]));
您将获得
false
,因为不再定义
$a[1]

如果对false执行相同操作:

$a = array(1,2,3);
$a[1] = false;
var_dump(isset($a[1]));

您将获得
true
,因为
$a[1]
被设置为布尔值
false

,这就是它的定义:实际上,如果您读取@mario post的
count()
的源代码,而不是任何不为null的值,那么数组或对象将返回1。这对于一个预先对数组和可数对象进行计数的函数来说是很奇怪的。您的示例是完全不同的情况,$a是实际数组
FALSE
是一个基本布尔值,不是数组的元素。例如,如果您有一个函数
get\u rows\u from\u db
,该函数从数据库中获取大量行,或者在查询失败时返回false。您希望
if(count(从_db()获取_行){}
足够了,而不是if(is_数组($result)&&count($result))。即使返回-1也更有意义。