CachingIterator 与其他迭代器(如 ArrayIterator)之间的唯一区别是 hasNext() 方法。
由于数据将被加载到内存中,因此 CachingIterator 能够检查给定迭代器是否具有下一个元素。
让我们通过一个例子来演示这一点
<?php
$iterator = new CachingIterator(new ArrayIterator(['C', 'C++', 'C#', 'PHP', 'Python', 'Go', 'Ruby']));
foreach ($iterator as $item) {
if ($iterator->hasNext()) {
echo $item.', ';
} else {
echo 'and '.$item;
}
}
// C, C++, C#, PHP, Python, Go, and Ruby
?>
在这个例子中,我检查迭代器是否还有下一个值,如果有,我追加一个逗号,否则会将“and”追加到最后一个元素。