有没有办法做array_map但作为迭代器?
例如:
foreach (new MapIterator($array, $function) as $value)
{
if ($value == $required)
break;
}
Run Code Online (Sandbox Code Playgroud)
这样做的原因是$ function很难计算,而$ array有太多的元素,只需要映射直到我找到一个特定的值.array_map将在我搜索我想要的值之前计算所有值.
我自己可以实现迭代器,但我想知道是否有本地方法来做到这一点.我找不到任何搜索PHP文档的东西.
这是一个懒惰的集合映射函数,它可以为您提供Iterator:
/**
* @param array|Iterator $collection
* @param callable $function
* @return Iterator
*/
function collection_map( $collection, callable $function ) {
foreach( $collection as $element ) {
yield $function( $element );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2708 次 |
| 最近记录: |