is_iterable
funkcja
Sprawdza, czy wartość jest tablicą lub obiektem implementującym Traversable (np. ArrayIterator, Generator). Dodana w PHP 7.1.
is_iterable(mixed $value): bool
is_iterable zwraca true dla dwóch rodzajów wartości: zwykłych tablic PHP oraz obiektów implementujących interfejs Traversable (np. ArrayIterator, Generator, klasy kolekcji z popularnych frameworków). Samo sprawdzenie is_array nie wystarczy, gdy chcesz obsłużyć zarówno tablice, jak i iteratory — właśnie do tego służy is_iterable. Stringi, liczby, obiekty bez Traversable i null dają false.
<?php
declare(strict_types=1);
function sumuj(mixed $dane): float
{
if (!is_iterable($dane)) {
throw new \InvalidArgumentException('Oczekiwano tablicy lub iteratora.');
}
$suma = 0.0;
foreach ($dane as $v) {
$suma += $v;
}
return $suma;
}
var_dump(sumuj([1.5, 2.5, 3.0])); // float(7)
var_dump(sumuj(new ArrayIterator([10, 20]))); // float(30)
var_dump(is_iterable([1, 2, 3])); // bool(true)
var_dump(is_iterable(new ArrayIterator([1, 2]))); // bool(true)
var_dump(is_iterable('tekst')); // bool(false)
var_dump(is_iterable(null)); // bool(false)