与 return 不同,yield 可用于函数中的任何位置,因此逻辑可以更自然地流动。例如,以下斐波那契生成器
<?php
function fib($n)
{
$cur = 1;
$prev = 0;
for ($i = 0; $i < $n; $i++) {
yield $cur;
$temp = $cur;
$cur = $prev + $cur;
$prev = $temp;
}
}
$fibs = fib(9);
foreach ($fibs as $fib) {
echo " " . $fib;
}
// 输出:1 1 2 3 5 8 13 21 34