【发布时间】:2019-01-08 23:02:11
【问题描述】:
我有一个 NoRewindIterator 已传递给 foreach:
$iterator = (new FileProcessor($this->input_file))->iterate($start, $limit);
foreach ($iterator as $line)
{
// Do stuff
}
在 PHP 7.2 中,一旦到达集合的末尾就会发出警告,因为 NoRewindIterator 没有实现 Countable:
警告:count():参数必须是数组或对象,在[file.php]中的[line]行实现Countable
NoRewindIterator 没有实现Countable 是有道理的,但我不知道有比foreach 更好的方法来使用迭代器遍历集合。解决这个问题的正确方法是什么?
【问题讨论】:
-
你确定这是产生错误的代码块吗?据我所知,
foreach不使用count功能。如果你不能迭代iterator(即NoRewindIterator),那就太奇怪了:)我猜你在代码的某个地方使用了count,你不仅不能将它用于NoRewindIterator,而且不能用于任何迭代器。请改用iterator_count。