1

我试图让产量工作,我将以下代码从http://php.net/manual/en/language.generators.syntax.php复制并粘贴到一个空文件中,并得到错误 Parse error: syntax error, unexpected [文件名] 中的“$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,则代码没有错误

4

2 回答 2

8

yield仅适用于 PHP 版本 > 5.5.

如果你尝试在以前的版本上使用它,你会得到一个T_VARIABLE解析错误。

请参阅3v4l 演示

于 2013-10-12T08:32:23.660 回答
-2

您必须将 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";
}
于 2013-10-12T08:37:17.760 回答