是否有任何方法可以循环遍历数组并在计算结果时返回每个结果,而不是等到所有值都计算完后再显示?
假设我有一个数组,其中包含从 1 到 10 的数字,是否可以循环遍历数组并返回1
, then 2
, then 3
, then 4
, then等5
,而不是一次性返回所有?显然我已经简化了这个请求,但基本上我的循环调用了一个有 1 秒超时的函数,因此用户等待 10 多秒以返回所有结果而不是每秒返回一个结果就不会那么烦人了。12345678910
是的,newPHP 5.5
提供了generators这样的东西。
function one_to_ten() {
for ($i = 1; $i <= 10; $i++) {
yield $i; //It is like a return, but can be done several times.
}
}
$generator = one_to_ten(); //The loop is not executed yet. We just created the generator.
/* Some big code here */
foreach ($generator as $number){//Only here the iteration starts.
echo "{$number} <br/>" ;
}