is_iterable

(PHP 7 >= 7.1.0, PHP 8)

is_iterable验证变量的内容是否为可迭代值

描述

is_iterable(混合 $value): 布尔值

验证变量的内容是否被 可迭代 伪类型接受,即它是一个 数组 或一个实现了 Traversable 的对象。

参数

value

要检查的值

返回值

如果 value 可迭代,则返回 true,否则返回 false

示例

示例 #1 is_iterable() 示例

<?php

var_dump
(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)

?>

参见

添加注释

用户贡献的注释 3 个注释

mopsyd at me dot com
6 年前
对 brcontainer 的 polyfill 进行了一点修正,它以非阻塞的方式防止了非对象上的错误,并且还修正了条件检查“file_exists”而不是正确的“function_exists”的问题。

if ( !function_exists( 'is_iterable' ) )
{

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

}

原始答案不会正确解决,因为它是在寻找文件而不是函数,并且提供的方法在给定一个不可迭代的非对象值(例如 false)时会报错。
brcontainer at yahoo dot com dot br
6 年前
PHP5.6 和 PHP7.0 的 polyfill

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