示例:
header("content-type:text/html;charset=utf-8");
function readTxt() {
$handle = fopen("./test.txt", 'rb');
while (feof($handle)===false) {
yield fgets($handle);
}
fclose($handle);
}
foreach (readTxt() as $key => $value) {
echo $value.'<br />';
}
yield 生成器允许你 在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组。
每次被加载到内存中的文字只有一行,大大的减小了内存的使用。
另一种方式是数组不叠加,而是重新赋值;分次读取就是类似SQL 中的 limit 分页操作。
Refer:php_yield