使用NoRewindIterator

时间:2018-08-01 11:32:16

标签: php iterator php-7.2

我有一个NoRewindIterator已传递给foreach

$iterator = (new FileProcessor($this->input_file))->iterate($start, $limit);

foreach ($iterator as $line)
{
    // Do stuff
}

在PHP 7.2中,这会在到达集合末尾时发出警告,因为NoRewindIterator未实现Countable

  

警告:count():参数必须是数组或对象,该对象必须在[line]行的[file.php]中实现Countable

NoRewindIterator没有实现Countable是有意义的,但是我不知道有比foreach更好的方法来使用迭代器遍历集合。解决此问题的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

我想您可以使用while

while ($iterator->valid()) {
    $value = $iterator->current();

    $iterator->next();
}