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 '和 '.$item;
}
}
// C, C++, C#, PHP, Python, Go, 和 Ruby
?>
在此範例中,我檢查迭代器是否具有下一個值,如果有的話,我會附加一個逗號,否則將「和」附加到最後一個元素。