有没有办法将 array_map 做为迭代器?
例如:
foreach (new MapIterator($array, $function) as $value)
{
if ($value == $required)
break;
}
这样做的原因是$function很难计算,$array的元素太多,只需要映射到找到具体的值即可。 array_map 将计算所有值,然后我才能搜索到我想要的值。
我可以自己实现迭代器,但我想知道是否有执行此操作的 native 方法。我找不到任何搜索 PHP 文档的内容。
最佳答案
简而言之:没有。
PHP 中没有内置惰性迭代器映射。有一个非惰性函数 iterator_apply(),但与您所追求的完全不同。
你可以像你说的那样自己写一个。我建议您扩展 IteratorIterator 并简单地覆盖 current() 方法。
关于PHP 惰性数组映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566129/