先看一个例子:
$a = count ("567") + count(null) + count(false);
echo $a;
?>
这个代码输出的结果是多少呢?如果你没有仔细看过count函数的用法,第一感觉是1,那么应该说通常你的直觉还是挺准的,但这次不是。
如果 count函数的参数不是数组类型或者实现了 Countable 接口的对象,将返回 1,有一个例外,如果 参数是 NULL 则结果是 0。
所以上面的代码输出2,false也被认为是1!!
对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。 请看示例代码:
class myCounter implements Countable {
public function count() {
static $count = 0;
return ++$count;
}
}
$counter = new myCounter;
for($i=0; $i<10; ++$i) {
echo "I have been count()ed " . count($counter) . " times\n";
}
?>