生成器最基本的思想也是一个函数,这个函数的返回值是依次输出,而不是只返回
一个单独的值。或者,换句话说,生成器使你更方便的实现了迭代器接口。下面通过实现
一个 xrange 函数来简单说明:
代码如下:
<?php
function
xrange(
$start
,
$end
,
$step
= 1) {
for
(
$i
=
$start
;
$i
<=
$end
;
$i
+=
$step
) {
yield
$i
;
}
}
foreach
(xrange(1, 1000000)
as
$num
) {
echo
$num
, "\n";
}
上面这个 xrange()函数提供了和 PHP 的内建函数 range()一样的功能。但是不同的是
range()函数返回的是一个包含属组值从 1 到 100 万的数组(注:请查看手册)。而
xrange()函数返回的是依次输出这些值的一个迭代器,而且并不会真正以数组形式计
算。
这种方法的优点是显而易见的。它可以让你在处理大数据集合的时候不用一次性的加
载到内存中。甚至你可以处理无限大的数据流。