offsetExists($index) 检查缓存,而不是内部或外部迭代器。
<?php
$cache = new \CachingIterator(
new \ArrayIterator(['a', 'b', 'c', 'd']),
\CachingIterator::FULL_CACHE);
$shortRange = range(0, 1);
$fullRange = range(0, 3);
foreach ($shortRange as $index) {
$cache->next();
}
echo PHP_EOL . 'The cache' . PHP_EOL;
var_export($cache->getCache());
echo PHP_EOL;
foreach ($fullRange as $offset) {
print_r("cache offset '$offset' " .
($cache->offsetExists("$offset") == 1
? 'exists'
: "doesn't exist"
) . PHP_EOL);
}
?>
缓存
数组 (
0 => 'a',
1 => 'b',
)
缓存偏移量 '0' 存在
缓存偏移量 '1' 存在
缓存偏移量 '2' 不存在
缓存偏移量 '3' 不存在