$ result 包含非特定数量的记录。
我需要遍历$ result,并在每100条记录之后执行某些操作,然后继续循环,但包含前一循环中的5条记录(重叠)。
像这样:
有人建议如何以最有效的方式完成这项工作吗?
答案 0 :(得分:2)
首先,我同意评论员的观点。我们在这里帮助您解决您遇到的问题,但不是为了编写您的脚本。
Neverthelesse我写了一个你的问题的结果解决方案:
$results; #your results
for($i = 0; $i <= @{$results}, $i++){ #loop through all results
my @tempList;
push(@tempList, @{$results}[$i]); #push every result in a temporary list
if (@{$results} == 100 || $i == @{$results}) { #do sth, if the tempList hast 100 entries or you're at the last round of your loop
#do sth with the 100 records
$i -= 5; #decrement i to get the 5 entries overlap
}
}
您可以看到这是一个简单的循环结果。每100周,if
将评估为真,您可以使用您的数据。
通过每100周减少计数器来实现重叠。完成循环后,在最后一轮中小心!如果你没有在最后一轮逃脱$i -= 5;
,你将获得一个无限循环!
答案 1 :(得分:1)
$slimit=0;
$flimit=100;
while($flimit<=total_records_in_your_table)
{
$q="select * from table_name limit $slimit,$flimit";
while($data=mysql_fetch_row($q))
{
//opration
}
$slimit=$flimit-6;
$flimit=$flimit+$slimit;
}