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)
📘 Naucz się w lekcji →