Php 为什么“count(新stdClass);”返回1?

Php 为什么“count(新stdClass);”返回1?,php,count,Php,Count,PHP中的stdClass应该是空对象,但出于某种原因,它的计数为1。为什么? PHP> (array)(new stdClass); // array( // // ) PHP> empty(new stdClass); // false PHP> count(new stdClass); // 1 如果您阅读了,您会发现关于返回值的这一部分: 返回值 返回数组_或可数数组_中的元素数。如果参数 不是数组或不是具有可数接口的对象, 1将被退回。如果数组_或_可数,则有一个

PHP中的stdClass应该是空对象,但出于某种原因,它的计数为1。为什么?

PHP> (array)(new stdClass);
// array(
// 
// )
PHP> empty(new stdClass);
// false
PHP> count(new stdClass);
// 1
如果您阅读了,您会发现关于返回值的这一部分:

返回值

返回数组_或可数数组_中的元素数。如果参数 不是数组或不是具有可数接口的对象, 1将被退回。如果数组_或_可数,则有一个例外 NULL,将返回0


传递给count的对象需要实现Countable接口

echo count(new stdclass()); //outputs 1

class countIt implements Countable{
    public function count(){        
    }
}

echo count(new countIt()); //outputs 0

有关更多详细信息,请参阅。

好消息!有人仍然相信JS是一种令人惊讶的语言吗@kolypto但是你问了一个PHP问题@spryno724,当然,只要注意到PHP也是令人惊讶的sometimes@kolypto但这为什么会令人惊讶呢输出或多或少是有意义的。空值或可数且为空的值为0,否则为1,因为您总是有1个字符串,1个布尔值,这里是:1个对象。@kingkero,如果传递一个空对象,我希望count告诉您它是空的。在PHP工作了10年,学习从未停止过