生成器和数组之间有什么区别?
今天,PHP团队发布了PHP 5.5.0版本,其中包括对生成器的支持。阅读文档,我注意到它完全符合数组的功能。
PHP 团队生成器示例:
// Only PHP 5.5
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();
foreach ($generator as $value) {
echo "$value\n";
}
结果:
1
2
3
但我可以使用数组做同样的事情。我仍然可以与早期版本的PHP保持兼容。
看一看:
// Compatible with 4.4.9!
function gen_one_to_three() {
$results = array();
for ($i = 1; $i <= 3; $i++) {
$results[] = $i;
}
return $results;
}
$generator = gen_one_to_three();
foreach ($generator as $value) {
echo "$value\n";
}
那么问题来了:这个新功能存在的目的是什么?我必须在不使用新功能的情况下播放所有文档示例,将其替换为数组。
任何人都可以给出一个很好的解释,也许一个示例,这在旧版本中不一定是不可能的,但是使用生成器可以帮助开发?