PHP Conference Japan 2024

is_iterable

(PHP 7 >= 7.1.0, PHP 8)

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

描述

is_iterable(混合类型 $value): 布尔值

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

参数

value

要检查的值

返回值

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

示例

示例 #1 is_iterable() 示例

<?php

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

?>

参见

添加笔记

用户贡献笔记 2 条笔记

34
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),则提供的方法会出错。
-2
anatoly dot pashin at gmail dot com
6 年前
以下是关于可迭代类型的更多详细信息:https://php.net/manual/en/language.types.iterable.php
To Top