iterator_count
funkcja
Zlicza elementy iteratora lub obiektu Traversable, przechodząc przez nie w pełni. Wynik to liczba całkowita.
iterator_count(Traversable|array $iterator): int
iterator_count przemierza przekazany iterator od bieżącej pozycji do końca i zwraca liczbę elementów jako int. W odróżnieniu od count() działa na dowolnym obiekcie Traversable — np. Generator, SplFixedArray, RecursiveIteratorIterator. Pamiętaj, że po wywołaniu iterator jest wyczerpany — jeśli chcesz go użyć ponownie, musisz go zresetować lub stworzyć od nowa. Dla zwykłych tablic lepiej użyć count().
<?php
declare(strict_types=1);
function parzyste(int $max): Generator
{
for ($i = 2; $i <= $max; $i += 2) {
yield $i;
}
}
$gen = parzyste(10);
echo iterator_count($gen); // 5
// Generator jest teraz wyczerpany — nie można go ponownie przejść
Jeśli potrzebujesz jednocześnie zliczyć i zachować elementy, rozważ iterator_to_array() a potem count() na wynikowej tablicy.