PHP 8.5.0 Alpha 2 available for testing

iterator_count

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

iterator_count Cuenta el número de elementos en un iterador

Descripción

iterator_count(Traversable|array $iterator): int

Cuenta los elementos en un iterador. No se garantiza que la función iterator_count() conserve la posición actual del iterador iterator.

Parámetros

iterator

El iterador del cual contar los elementos.

Valores devueltos

El número de elementos en el iterador iterator.

Historial de cambios

Versión Descripción
8.2.0 El tipo de iterator ha sido ampliado de Traversable a Traversable|array.

Ejemplos

Ejemplo #1 Ejemplo con iterator_count()

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

El ejemplo anterior mostrará :

int(4)

Ejemplo #2 Ejemplo con iterator_count() que modifica la posición

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

El ejemplo anterior mostrará :

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

Ejemplo #3 Ejemplo con iterator_count() en un ciclo foreach

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

El ejemplo anterior mostrará :

0: one (3)

add a note

User Contributed Notes 2 notes

up
1
info at ensostudio dot ru
4 years ago
Safe using:
<?php
$cnt
= iterator_count(clone $iterator);
?>
up
1
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)

?>
To Top