iterator_count

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

iterator_countCount the elements in an iterator

Descrizione

iterator_count(Traversable|array $iterator): int

Count the elements in an iterator. iterator_count() is not guaranteed to retain the current position of the iterator.

Elenco dei parametri

iterator

The iterator being counted.

Valori restituiti

The number of elements in iterator.

Log delle modifiche

Versione Descrizione
8.2.0 The type of iterator has been widened from Traversable to Traversable|array.

Esempi

Example #1 iterator_count() example

<?php
$iterator
= new ArrayIterator(array('recipe'=>'pancakes', 'egg', 'milk', 'flour'));
var_dump(iterator_count($iterator));
?>

Il precedente esempio visualizzerĂ :

int(4)

Example #2 iterator_count() modifies position

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

Il precedente esempio visualizzerĂ :

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

Example #3 iterator_count() in foreach loops

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

Il precedente esempio visualizzerĂ :

0: one (3)

add a note add a note

User Contributed Notes 2 notes

up
2
fractile81 at gmail dot com
3 years ago
After using this function, the traversable's pointer will point at the end.  Examples 2 and 3 highlight this using code.

This means that when you call iterator_count($foo)...
- Before a foreach-loop on $foo, the loop will not execute because it's already at the end.  Calling $foo->rewind() will reset the traversable to the beginning.
- Inside a foreach-loop on $foo, the loop will complete the current iteration and not repeat.  Something like $foo->seek($i) can be used to reset the pointer, where $i contains the pointer's value prior to counting.
up
0
info at ensostudio dot ru
3 years ago
Safe using:
<?php
$cnt
= iterator_count(clone $iterator);
?>
To Top