PHP 统计迭代器元素个数 iterator_count()
对于一个生成器或者迭代器,我们要怎么知道它到底有多个元素呢?
生成器或迭代器不是一个数组,我们不能使用 count()
返回它们的元素长度,有因为它们一次只返回一个元素,所以,统计迭代器或生成器的最好办法,好像是使用 iterator_to_array()
先将它们转换为一个数组,然后再用 count()
统计元素个数。就像下面这样
<?php function count_to_ten() { foreach (range(0,10) as $v) { yield $v; } } $nums = iterator_to_array(count_to_ten()); print_r(count($nums));
输出结果为
11
为什么是 11 ,因为 PHP 中的生成器返回的值包含上下限。
因为统计一个迭代器或生成器的元素个数功能是如此的常见,因此,PHP 早在 5.1.0 中就引入了 iterator_count()
函数
PHP iterator_count() 函数
PHP iterator_count()
函数用于计算迭代器或生成器中元素的个数。该函数的原型如下
int iterator_count ( Traversable $iterator )
该函数返回迭代器或生成器 $iterator 中的元素个数
参数 | 说明 |
---|---|
$iterator | 要统计的迭代器或生成器 |
范例一
统计一个关联数组迭代器元素的个数
<?php $iterator = new ArrayIterator(array('recipe'=>'pancakes', 'egg', 'milk', 'flour')); var_dump(iterator_count($iterator));
运行结果为 4