是否有任何方法可以循环遍历数组并在计算结果时返回每个结果,而不是等到所有值都计算出来之后再显示它们?
假设我有一个数字从1到10的数组,是否可以遍历数组并返回1
,然后2
,然后3
,然后{{ 1}},然后4
,等。而不是一次性返回5
?显然我已经简化了这个请求,但基本上我的循环调用了一个具有1秒超时的函数,因此对于用户等待10+秒以返回所有结果而不是每秒返回的结果都不那么烦人了。 / p>
答案 0 :(得分:2)
是的,新的PHP 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/>" ;
}