CascadiaPHP 2024


(PHP 7 >= 7.1.0, PHP 8)

is_iterable Проверяет, итерируемо ли содержимое переменной


is_iterable(mixed $value): bool

Проверяет, соответствует ли содержимое переменной псевдотипу iterable, то есть — это либо массив (array), либо объект, который реализует интерфейс Traversable.

Список параметров


Переменная для проверки.

Возвращаемые значения

Возвращает true, если значение value итерируемо, иначе false.


Пример #1 Пример использования функции is_iterable()


(is_iterable([1, 2, 3])); // bool(true)
var_dump(is_iterable(new ArrayIterator([1, 2, 3]))); // bool(true)
var_dump(is_iterable((function () { yield 1; })())); // bool(true)
var_dump(is_iterable(1)); // bool(false)
var_dump(is_iterable(new stdClass())); // bool(false)


Смотрите также

  • is_array() - Определяет, представляет ли собой переменная массив

add a note

User Contributed Notes 3 notes

mopsyd at me dot com
6 years ago
A slight correction to brcontainer's polyfill, which prevents errors on a non-object in a non-blocking way, and also corrects the issue of the conditional checking "file_exists" instead of the correct "function_exists":

if ( !function_exists( 'is_iterable' ) )

function is_iterable( $obj )
return is_array( $obj ) || ( is_object( $obj ) && ( $obj instanceof \Traversable ) );


The original answer would not have resolved correctly, because it was looking for a file instead of a function, and the provided method would error if given a non-iterable non-object value such as false.
brcontainer at yahoo dot com dot br
6 years ago
Polyfill for PHP5.6 and PHP7.0

if (!file_exists('is_iterable')) {
function is_iterable($obj)
return is_array($obj) || $obj instanceof \Traversable;
To Top