1

yield を機能させようとして、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 に答える