PHP 8.5.0 Alpha 1 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 resultado del ejemplo sería:

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 resultado del ejemplo sería:

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 resultado del ejemplo sería:

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