PHP 7.1.0引入了iterable
伪类型和is_iterable()
函数,它们是专门为此目的而设计的:
这 […] 提出了一种新的iterable
伪类型。这种类型类似于callable
,接受多种类型而不是一种类型。
iterable
接受任何array
或实现的对象Traversable
。这两种类型都是可迭代的,foreach
并且可以yield
在生成器中使用。
function foo(iterable $iterable) {
foreach ($iterable as $value) {
// ...
}
}
这个 […] 还添加了一个is_iterable()
返回布尔值的函数:true
如果一个值是可迭代的并且将被iterable
伪类型接受,false
则为其他值。
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)
您还可以使用该函数is_array($var)
检查传递的变量是否为数组:
<?php
var_dump( is_array(array()) ); // true
var_dump( is_array(array(1, 2, 3)) ); // true
var_dump( is_array($_SERVER) ); // true
?>
阅读更多如何检查变量是否是 PHP 中的数组?