iterator_apply în PHP

Tablouri (array) PHP 5.1+

Apelează o funcție pentru fiecare element al unui iterator, cât timp funcția returnează true.

Sintaxă
iterator_apply(Traversable $iterator, callable $callback, ?array $args = null): int

Ce face iterator_apply

iterator_apply mută iteratorul pas cu pas și apelează funcția ta la fiecare element. Funcția nu primește automat elementul: de obicei îi trimiți chiar iteratorul în $args și citești $it->current().

Parcurgerea continuă doar cât timp funcția returnează true. În practică, un foreach este aproape mereu mai simplu.

Parametri

Parametru Descriere
$iterator Iteratorul parcurs.
$callback Funcția apelată. Trebuie să returneze true ca parcurgerea să continue.
$args Opțional. Tabloul de parametri trimis funcției la fiecare apel.

Ce returnează

Numărul de apeluri ale funcției.

Exemple

Exemplul 1: Parcurgere cu iterator_apply

<?php
$it = new ArrayIterator(["Ana", "Mihai", "Ioana"]);

$apeluri = iterator_apply($it, function (Iterator $it) {
    echo strtoupper($it->current()) . "\n";
    return true;
}, [$it]);

echo "Apeluri: $apeluri";

Rezultat

ANA
MIHAI
IOANA
Apeluri: 3

Exemplul 2: Oprire la prima valoare găsită

<?php
$it = new ArrayIterator([4, 8, 15, 16]);

iterator_apply($it, function (Iterator $it) {
    if ($it->current() % 2 !== 0) {
        echo "Primul număr impar: " . $it->current();
        return false;
    }
    return true;
}, [$it]);

Rezultat

Primul număr impar: 15

Greșeli frecvente

  • Uiți return true. Funcția returnează null și parcurgerea se oprește după primul element.

Comenzi înrudite

  • foreach: Parcurge, pe rând, fiecare element dintr-un tablou.
  • iterator_to_array: Copiază toate elementele unui iterator sau generator într-un tablou obișnuit.
  • array_walk: Apelează o funcție pentru fiecare element al unui tablou, cu acces la cheie și la valoare.