PHP Conference Japan 2024

NoRewindIterator 類別

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

簡介

此迭代器會忽略 rewind 操作。這允許在多個部分 foreach 迴圈中處理迭代器。

類別概要

class NoRewindIterator extends IteratorIterator {
/* 方法 */
public __construct(Iterator $iterator)
public current(): mixed
公開 key(): 混合
公開 next():
公開 rewind():
公開 valid(): 布林
/* 繼承方法 */
}

目錄

新增註釋

使用者貢獻的註釋 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