在 PHP5.4 中使用 yield 时出现语法错误


Syntax error while using yield with PHP5.4

>我试图让产量工作,我将以下代码从 http://php.net/manual/en/language.generators.syntax.php 复制并粘贴到一个空文件中,并得到错误解析错误:语法错误,[文件名]中意外的"$i"(T_VARIABLE(

我正在运行 XAMPP v3.2.1,它在我的其余代码(尚未使用 yield 语句(和 PHP 5.4.16 中一直完美运行。

知道我做错了什么或我应该做什么吗?

<?php
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";
}
?>

如果将 yield 替换为 echo,则代码没有错误

yield仅在 PHP 版本> 5.5 上可用。

如果您尝试在以前的版本上使用它,则会收到T_VARIABLE解析错误。

请参阅 3v4l 演示。

必须用括号将yield语句括起来

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";
}