PHP 8.4.0 RC4 available for testing

iterator_count

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

iterator_count Compte de nombre d'éléments dans un itérateur

Description

iterator_count(Traversable|array $iterator): int

Compte les éléments dans un itérateur. Il n'est pas garantie que la fonction iterator_count() conserve la position courante de l'itérateur iterator.

Liste de paramètres

iterator

L'itérateur dont il faut compter les éléments.

Valeurs de retour

Le nombre d'éléments dans l'itérateur iterator.

Historique

Version Description
8.2.0 Le type de iterator a été élargi de Traversable à Traversable|array.

Exemples

Exemple #1 Exemple avec iterator_count()

<?php
$iterator
= new ArrayIterator(array('recipe'=>'crêpes', 'oeufs', 'lait', 'farine'));
var_dump(iterator_count($iterator));
?>

L'exemple ci-dessus va afficher :

int(4)

Exemple #2 Exemple avec iterator_count() qui modifie la position

<?php
$iterator
= new ArrayIterator(['one', 'two', 'three']);
var_dump($iterator->current());
var_dump(iterator_count($iterator));
var_dump($iterator->current());
?>

L'exemple ci-dessus va afficher :

string(3) "one"
int(3)
NULL

Exemple #3 Exemple avec iterator_count() dans une boucle foreach

<?php
$iterator
= new ArrayIterator(['one', 'two', 'three']);
foreach (
$iterator as $key => $value) {
echo
"$key: $value (", iterator_count($iterator), ")\n";
}
?>

L'exemple ci-dessus va afficher :

0: one (3)

add a note

User Contributed Notes 2 notes

up
3
oleksii dot bulba at gmail dot com
3 years ago
Be aware that counting over NoRewindIterator will make items unavailable:

<?php

$iterator
= new ArrayIterator(['recipe'=>'pancakes', 'egg', 'milk', 'flour']);
$iterator = new NoRewindIterator($iterator);

var_dump($iterator->current());
var_dump(iterator_count($iterator));
var_dump($iterator->current());
$iterator->rewind(); // Does not work because it's NoRewindIterator
var_dump($iterator->current());
var_dump(iterator_count($iterator));

?>

Output:

<?php

/*
string(8) "pancakes"
int(4)
NULL
NULL
*/
int(0)

?>
up
2
info at ensostudio dot ru
4 years ago
Safe using:
<?php
$cnt
= iterator_count(clone $iterator);
?>
To Top