如何内爆发电机?

How to implode a generator?

我有一个 PHP generator 生成一些 $key => $value

是否有 "easy" 方法来 implode 值(通过传递生成器名称)?或者将其转换为数组?

我可以用几行代码来做到这一点,但是有一些内置函数可以做到这一点吗?

您可以使用 iterator_to_array 功能,请看下面的示例:

function gen_one_to_three() {
    for ($i = 1; $i <= 3; $i++) {
        // Note that $i is preserved between yields.
        yield $i;
    }
}

$generator = gen_one_to_three();

$array = iterator_to_array($generator);
print_r($array);

输出

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

必须牢记

A generator is simply a function that returns an iterator.

例如:

function digits() {
    for ($i = 0; $i < 10; $i++) {
        yield $i;
    }
}

digits是生成器,digits()是迭代器。

因此应该搜索 "iterator to array" 函数,找到 iterator_to_array (suggested by )