我有一个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
更好的方法来使用迭代器遍历集合。解决此问题的正确方法是什么?
答案 0 :(得分:3)
我想您可以使用while
:
while ($iterator->valid()) {
$value = $iterator->current();
$iterator->next();
}