【发布时间】:2015-10-20 11:55:45
【问题描述】:
我如何检测变量是Traversable 对象以在foreach 循环中使用?
if(is_traversable($variable)) {
return (array) $variable;
}
【问题讨论】:
标签: php arrays traversable
我如何检测变量是Traversable 对象以在foreach 循环中使用?
if(is_traversable($variable)) {
return (array) $variable;
}
【问题讨论】:
标签: php arrays traversable
使用instanceof判断对象是否为Traversable
if($variable instanceof \Traversable) {
// is Traversable
}
【讨论】:
false,除非 Traversable 已导入或完全限定,因此 OP 应添加 use Traversable; 或使用 @ 987654327@ 到他们的代码。
is_iterable 从 PHP 7.1 起可以使用。
// https://wiki.php.net/rfc/iterable
var_dump(
true === is_iterable([1, 2, 3]),
true === is_iterable(new ArrayIterator([1, 2, 3])),
true === is_iterable((function () { yield 1; })())
);
【讨论】: