动态AppendIterator(或类似的东西)

时间:2014-07-09 09:18:06

标签: php iterator spl

迭代时是否可以向AppendIterator添加新的迭代器?我想做的是迭代到api-call的结果。如果结果中没有其他项目,我想检查是否可以从api中获取另一个结果。

我可以通过实现Iterator接口并在valid()方法中保存逻辑的简单方法来实现这一点,但我想分离项迭代器(迭代响应中的每个项)和响应迭代器(迭代项迭代器的一个或多个响应。)

我发现AppendIterator的唯一例子是在迭代阶段之前附加所有迭代器。

当我尝试使用重载的AppendIterator自己实现它时,我或者陷入无限循环或者无法遍历到下一个项目(第二个迭代器的第一项)

1 个答案:

答案 0 :(得分:2)

是的,你可以。

$array = [1,2,3];
$iterator = new AppendIterator ();
$iterator->append(new ArrayIterator($array));

foreach ($iterator as $i)
{
    echo $i, "\n";
    if ($i == 2)
    {
        $iterator->append(new ArrayIterator([6,7,8]));
    }
}

这告诉我: 1 2 3 6 7 8