PHP 8.5.0 RC 2 available for testing

La classe LimitIterator

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

Introduction

La classe LimitIterator permet d'itérer sur une partie limitée d'entités depuis un Iterator.

Synopsis de la classe

class LimitIterator extends IteratorIterator {
/* Méthodes */
public __construct(Iterator $iterator, int $offset = 0, int $limit = -1)
public current(): mixed
public getPosition(): int
public key(): mixed
public next(): void
public rewind(): void
public seek(int $offset): int
public valid(): bool
/* Méthodes héritées */
}

Exemples

Exemple #1 Exemple d'utilisation de LimitIterator

<?php

// Creér un itérateur à limiter
$fruits = new ArrayIterator(array(
'apple',
'banana',
'cherry',
'damson',
'elderberry'
));

// Boucle sur les 3 premiers fruits uniquement
foreach (new LimitIterator($fruits, 0, 3) as $fruit) {
var_dump($fruit);
}

echo
"\n";

// Boucle depuis le 3ème fruit jusqu'au dernier
// Note: la clé démarre à zéro pour apple
foreach (new LimitIterator($fruits, 2) as $fruit) {
var_dump($fruit);
}

?>

L'exemple ci-dessus va afficher :

string(5) "apple"
string(6) "banana"
string(6) "cherry"

string(6) "cherry"
string(6) "damson"
string(10) "elderberry"

Sommaire

add a note

User Contributed Notes 2 notes

up
1
christophg at grenz-bonn dot de
4 years ago
If the inner iterator implements SeekableIterator, LimitIterator uses seek() after rewind() to move to the offset.
up
0
woody dot gilk at gmail dot com
11 hours ago
Note that the keys are NOT altered by LimitIterator, so:

$items = new LimitIterator([0 => 'foo', 1 => 'bar', 2 => 'baz'], 1, 1);

// $items is effectively [1 => 'bar']
To Top