ジェネレータ関数を使用すると、yieldが呼び出されるたびに値が生成され、反復処理の中でメモリを節約することができます。
function temperature_diff($temperature_infos){ // temperature_infosにはある日付をキーに、その日の最低気温と、最高気温が入っている。 foreach($temperature_infos as $temperature_info){ yield ($temperature_info["high"] - $temperature_info["low"]); } } $temperature_diff = temperature_diff();
このようにすれば、
foreach($temperature_diff as $diff){ echo($diff); // => 6など }
という温度差の出力をするたびに、temperature_diff関数において、次にyieldが呼ばれるところまで実行される実装になり、巨大な配列を複数作らなくてもよい->メモリの節約ができる、という利点があります。