Ce face is_iterable
is_iterable returnează true pentru tablouri și pentru obiectele care implementează Traversable: generatoare, ArrayIterator, ArrayObject și altele.
Un obiect obișnuit (stdClass) poate fi parcurs cu foreach, dar nu este considerat iterabil. La fel, textele nu sunt iterabile.
Parametri
| Parametru | Descriere |
|---|---|
$value |
Valoarea verificată. |
Ce returnează
true dacă valoarea este tablou sau Traversable, altfel false.
Exemple
Exemplul 1: Ce este iterabil
<?php
function numere(): Generator
{
yield 1;
}
var_dump(is_iterable([1, 2]));
var_dump(is_iterable(numere()));
var_dump(is_iterable(new stdClass()));
var_dump(is_iterable("abc"));
Rezultat
bool(true)
bool(true)
bool(false)
bool(false)
Exemplul 2: O funcție care primește tablou sau generator
<?php
function suma(mixed $valori): int
{
if (!is_iterable($valori)) {
return 0;
}
$total = 0;
foreach ($valori as $v) {
$total += $v;
}
return $total;
}
echo suma([10, 20]) . "\n";
echo suma(new ArrayIterator([1, 2, 3])) . "\n";
echo suma(null);
Rezultat
30
6
0
Greșeli frecvente
- Folosești
is_arrayși refuzi generatoarele și iteratorii. Dacă doar parcurgi datele cuforeach, verifică cuis_iterablesau declară tipuliterable.
Comenzi înrudite
is_array: Verifică dacă o valoare este un tablou (array).is_countable: Verifică dacă o valoare poate fi numărată cu count: un tablou sau un obiect Countable.iterator_to_array: Copiază toate elementele unui iterator sau generator într-un tablou obișnuit.