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.