is_iterable

(PHP 7 >= 7.1.0, PHP 8)

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

Описание

is_iterable(mixed $value): bool

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

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

value

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

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

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

Примеры

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

<?php

var_dump
(is_iterable([123]));  // bool(true)
var_dump(is_iterable(new ArrayIterator([123])));  // 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 add a note

User Contributed Notes 4 notes

up
25
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.
up
0
info at ensostudio dot ru
3 years ago
Note: IteratorAggregate too extends Traversable:
<?php
class Data implements IteratorAggregate
{
    protected
$data = ['foo' => 'bar'];

    public function
getIterator(): Generator
   
{
        return yield from
$this->data;
    }
}

var_dump(is_iterable(new Data())); // bool(true)
?>
up
-11
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