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

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.