iterator_count în PHP

Tablouri (array) PHP 5.1+ (tablouri acceptate: PHP 8.2+)

Numără elementele unui iterator sau generator, parcurgându-l până la capăt.

Sintaxă
iterator_count(Traversable|array $iterator): int

Ce face iterator_count

count nu merge pe generatoare. iterator_count parcurge iteratorul și numără câte elemente a primit.

Pentru că parcurge iteratorul, un generator nu mai poate fi folosit după numărare.

Parametri

Parametru Descriere
$iterator Iteratorul, generatorul sau tabloul numărat.

Ce returnează

Numărul de elemente.

Exemple

Exemplul 1: Liniile unui fișier citite cu un generator

<?php
file_put_contents("lista.txt", "Ana\nMihai\nIoana\n");

function linii(string $fisier): Generator
{
    $f = fopen($fisier, "r");
    while (($linie = fgets($f)) !== false) {
        yield trim($linie);
    }
    fclose($f);
}

echo iterator_count(linii("lista.txt")) . " linii";

Rezultat

3 linii

Exemplul 2: Fișierele dintr-un director

<?php
mkdir("poze");
touch("poze/a.jpg");
touch("poze/b.jpg");

echo iterator_count(new FilesystemIterator("poze"));

Rezultat

2

Greșeli frecvente

  • Numeri un generator și apoi încerci să îl parcurgi cu foreach. Generatorul a fost deja consumat.

Comenzi înrudite

  • count: Returnează numărul de elemente dintr-un tablou.
  • iterator_to_array: Copiază toate elementele unui iterator sau generator într-un tablou obișnuit.
  • is_countable: Verifică dacă o valoare poate fi numărată cu count: un tablou sau un obiect Countable.