gpt4 book ai didi

php - 可迭代对象和数组类型提示?

转载 作者:IT王子 更新时间:2023-10-29 00:39:20 24 4
gpt4 key购买 nike

我有很多函数要么具有数组类型提示,要么使用 is_array() 检查变量的数组性。

现在我开始使用可迭代的对象。它们实现了 IteratorIteratorAggregate。如果它们通过类型提示或通过 is_array(),它们是否会被接受为数组?

如果我必须修改我的代码,是否有一种通用的 is_iterable(),或者我必须做类似的事情:

if ( is_array($var) OR $var instance_of Iterable OR $var instanceof IteratorAggregate ) { ... }

还有哪些其他可迭代接口(interface)?

最佳答案

我认为您的意思是 instanceof Iterator,PHP 没有 Iterable 接口(interface)。它确实有 Traversable接口(interface)虽然。 IteratorIteratorAggregate 都扩展了 Traversable (并且 AFAIK 他们是唯一这样做的)。

但是不,实现 Traversable 的对象不会通过 is_array() 检查,也没有内置的 is_iterable()功能。您可以使用的支票是

function is_iterable($var) {
return (is_array($var) || $var instanceof Traversable);
}

需要明确的是,所有 php 对象都可以用foreach 进行迭代,但只有一些 实现了Traversable。因此,提供的 is_iterable 函数不会检测到 foreach 可以处理的所有内容。

关于php - 可迭代对象和数组类型提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3584700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com