【发布时间】:2009-07-15 19:15:19
【问题描述】:
在 Python(和其他)中,您可以通过在函数中使用“yield”运算符来增量处理大量数据。在 PHP 中这样做的类似方法是什么?
例如,假设在 Python 中,如果我想读取一个可能非常大的文件,我可以像这样一次处理每一行(这个例子是人为的,因为它基本上与 'for file_obj'中的行):
def file_lines(fname):
f = open(fname)
for line in f:
yield line
f.close()
for line in file_lines('somefile'):
#process the line
我现在(在 PHP 中)正在做的是使用私有实例变量来跟踪状态,并在每次调用函数时采取相应的行动,但似乎必须有更好的方法。
【问题讨论】:
-
这可能不能直接解决您的问题,但似乎 PHP 即将获得生成器(使用
yield关键字)!见:wiki.php.net/rfc/generators -
是的,PHP 5.5 支持产量:se2.php.net/manual/en/language.generators.overview.php
标签: php python lazy-evaluation