PHP 8.0.0 Release Candidate 3 available for testing

La classe NoRewindIterator

(PHP 5 >= 5.1.0, PHP 7)

Introduction

Cet itérateur ignore les opérations de remise à zéro. Ceci permet de traiter un itérateur dans plusieurs boucle foreach partielles.

Synopsis de la classe

NoRewindIterator extends IteratorIterator {
/* Méthodes */
public __construct ( Iterator $iterator )
public current ( void ) : mixed
public getInnerIterator ( void ) : iterator
public key ( void ) : mixed
public next ( void ) : void
public rewind ( void ) : void
public valid ( void ) : bool
/* Méthodes héritées */
public IteratorIterator::current ( void ) : mixed
public IteratorIterator::key ( void ) : mixed
public IteratorIterator::next ( void ) : void
public IteratorIterator::rewind ( void ) : void
public IteratorIterator::valid ( void ) : bool
}

Sommaire

add a note add a note

User Contributed Notes 1 note

up
1
Anonymous
6 months 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;
}

?>
To Top