所以我有这些Generator
个对象 - 你知道,cool new things in PHP 5.5使得懒惰的枚举变得容易。但是,有时候,我不想要延迟枚举:我想获取我通常会迭代的数据并将其全部放入数组 - like LINQ has,但对于PHP。
大多数时候我想要一台发电机,但我还有几次我需要一个阵列。例如,如果有可能多次枚举数据,并且在迭代所有项之前停止枚举过程的可能性很小。
是否有一些内在的PHP函数需要Iterator
或Traversable
并输出一个数组?我真的不想做的是编写我自己的函数/方法。是的,我知道,这是一个简短的程序,但我喜欢避免散布一堆辅助函数。
为了避免不可避免的“使用foreach循环”答案,这就是这种方法:
<?php
function enumerate(\Traversable $iterator)
{
$array = [];
foreach ($iterator as $k => $v) {
$array[$k] = $v;
}
return $array;
}
我还有一些其他的hackish想法,但我真正想要的是一个不需要任何额外代码,文件或库的功能。没什么好看的。
答案 0 :(得分:2)
iterator_to_array
(PHP 5&gt; = 5.1.0)
iterator_to_array - 将迭代器复制到数组
<强>描述强>
array iterator_to_array(Traversable $ iterator [,bool $ use_keys = 是])