PHP Conference Japan 2024

NoRewindIterator 类

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

简介

此迭代器忽略重绕操作。这允许在多个部分 foreach 循环中处理迭代器。

类概要

class NoRewindIterator extends IteratorIterator {
/* 方法 */
public __construct(Iterator $iterator)
public current(): mixed
public key(): mixed
public next(): void
public rewind(): void
public valid(): bool
/* 继承的方法 */
}

目录

添加注释

用户贡献的注释 1 条注释

7
匿名
4 年前
顾名思义,NoRewindIterator 在到达迭代器末尾时不会调用“rewind”方法。

让我们通过两个例子来演示它。

在这个例子中,“rewind”方法将在“foreach”到达其末尾后被调用,所以,我们可以根据需要多次重复打印相同的值

<?PHP
$iterator
= new ArrayIterator(['PHP', 'Python', 'Go']);

foreach (
$iterator as $item) {
echo
$item.PHP_EOL;
}

foreach (
$iterator as $item) {
echo
$item.PHP_EOL;
}
?>

通过使用 NoRewindIterator,“rewind”将不会被调用,所以,我们不能像在前面的例子中那样做

<?PHP
$iterator
= new ArrayIterator(['PHP', 'Python', 'Go']);
$iterator = new NoRewindIterator($iterator);

foreach (
$iterator as $item) {
echo
$item.PHP_EOL;
}

// 什么也不做
foreach ($iterator as $item) {
echo
$item.PHP_EOL;
}

?>
To Top