ジェネレータでは、yield構文を使ってforeachなどで利用できる値の列を生成することができます。 このコード例を見ただけだと、関数で配列を返したりイテレータを使うのと何が違うのかわからないと思います。PHP5.5で実装されたジェネレータの一番の特徴は、ジェネレータ内で一度値を生成すると計算が途中で止まって呼び出し元へ制御が復帰し、再びジェネレータ内に制御が戻ると以前の計算の位置から処理が再開されるということです。 以下のような例を実行します。 <?php function hoge() { echo "generating a\n"; yield 'a'; echo "generating b\n"; yield 'b'; echo "generating c\n"; yield 'c'; } function fuga() { $ret = []; echo "add a\n";