stdClass
应该是一个空对象,但由于某种原因count()
为1
。为什么呢?
PHP> (array)(new stdClass);
// array(
//
// )
PHP> empty(new stdClass);
// false
PHP> count(new stdClass);
// 1
答案 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。