The NoRewindIterator class
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
简介
This iterator ignores rewind operations. This allows processing an iterator in multiple partial foreach loops.
类摘要
目录
- NoRewindIterator::__construct — Construct a NoRewindIterator
- NoRewindIterator::current — Get the current value
- NoRewindIterator::getInnerIterator — Get the inner iterator
- NoRewindIterator::key — Get the current key
- NoRewindIterator::next — Forward to the next element
- NoRewindIterator::rewind — Prevents the rewind operation on the inner iterator
- NoRewindIterator::valid — Validates the iterator

User Contributed Notes 1 note
Anonymous ¶
2 years ago
As its name implies, NoRewindIterator doesn't invoke the "rewind" method when It reaches the end of the iterator.
Let's demonstrate it by two examles.
In this example the "rewind" method will be invoked after when the "foreache" reaches its end, so, we can repeat printing the same values as many times as we want:
<?PHP
$iterator = new ArrayIterator(['PHP', 'Python', 'Go']);
foreach ($iterator as $item) {
echo $item.PHP_EOL;
}
foreach ($iterator as $item) {
echo $item.PHP_EOL;
}
?>
By using the NoRewindIterator, the "rewind" won't be invoked, so, we can't do as we did in previous example:
<?PHP
$iterator = new ArrayIterator(['PHP', 'Python', 'Go']);
$iterator = new NoRewindIterator($iterator);
foreach ($iterator as $item) {
echo $item.PHP_EOL;
}
// doesn't do anything
foreach ($iterator as $item) {
echo $item.PHP_EOL;
}
?>
备份地址:http://www.lvesu.com/blog/php/class.norewinditerator.php