这篇文章主要介绍了关于php yield 的作用,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
function createRange($number){ for($i=0;$i<$number;$i++){ yield time(); } }$result = createRange(10); // 这里调用上面我们创建的函数 foreach($result as $value){ sleep(1); echo $value.'<br />'; }
首先调用 createRange 函数,传入参数10
,但是 for 值执行了一次然后停止了,并且告诉 foreach 第一次循环可以用的值。
foreach 开始对 $result 循环,进来首先 sleep(1) ,然后开始使用 for 给的一个值执行输出。
foreach 准备第二次循环,开始第二次循环之前,它向 for 循环又请求了一次。
for 循环于是又执行了一次,将生成的时间戳告诉 foreach .
foreach 拿到第二个值,并且输出。由于 foreach 中 sleep(1) ,所以, for 循环延迟了1秒生成当前时间
所以,整个代码执行中,始终只有一个记录值参与循环,内存中也只有一条信息。
无论开始传入的 $number 有多大,由于并不会立即生成所有结果集,所以内存始终是一条循环的值。
相关推荐:
Atas ialah kandungan terperinci php yield 的作用. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!