为什么`count(new stdClass);`返回1?

时间:2014-06-03 11:30:54

标签: php count

PHP中的

stdClass应该是一个空对象,但由于某种原因count()1。为什么呢?

PHP> (array)(new stdClass);
// array(
// 
// )
PHP> empty(new stdClass);
// false
PHP> count(new stdClass);
// 1

2 个答案:

答案 0 :(得分:8)

如果您阅读documentation of the count function,您会在此部分找到有关返回值的信息:

  

返回值

     

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

答案 1 :(得分:2)

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

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

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

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

有关详细信息,请参阅Countable