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.