迭代时是否可以向AppendIterator添加新的迭代器?我想做的是迭代到api-call的结果。如果结果中没有其他项目,我想检查是否可以从api中获取另一个结果。
我可以通过实现Iterator接口并在valid()方法中保存逻辑的简单方法来实现这一点,但我想分离项迭代器(迭代响应中的每个项)和响应迭代器(迭代项迭代器的一个或多个响应。)
我发现AppendIterator的唯一例子是在迭代阶段之前附加所有迭代器。
当我尝试使用重载的AppendIterator自己实现它时,我或者陷入无限循环或者无法遍历到下一个项目(第二个迭代器的第一项)
答案 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