Php 每个循环的限制和偏移
假设我想循环遍历XML节点,但我想忽略前10个,然后将我获取的数量限制为10Php 每个循环的限制和偏移,php,Php,假设我想循环遍历XML节点,但我想忽略前10个,然后将我获取的数量限制为10 $limit=10; //define results limit $o=20; //define offset $i=0; //start line counter foreach($xml->id AS $key => $value){ $i++; if($i > $o){ //if line number is less than offset, do nothing.
$limit=10; //define results limit
$o=20; //define offset
$i=0; //start line counter
foreach($xml->id AS $key => $value){
$i++;
if($i > $o){
//if line number is less than offset, do nothing.
}else{
if($i == "$limit"){break;} //if line is over limit, break out of loop
//do stuff here
}
}
所以在这个例子中,我想从结果20开始,只显示10个结果,然后打破循环。但它不起作用。有什么想法吗?里面有多个bug。应该是
foreach (...
if ($i++ < $o) continue;
if ($i > $o + $limit) break;
// do your stuff here
}
foreach(。。。
如果($i++<$o)继续;
如果($i>$o+$limit)中断;
//在这里做你的事
}
您应该使用在$o之前达到$limit的原因。您可以对元素数组使用next()函数:
$limit=10; //define results limit
$o=20; //define offset
$i=0; //start line counter
for ($j = 0; $j < $o; $j++) {
next($xml->id);
}
foreach($xml->id AS $key => $value){
$i++;
if($i > $o){
//if line number is less than offset, do nothing.
}else{
if($i == "$limit"){break;} //if line is over limit, break out of loop
//do stuff here
}
}
$limit=10;//定义结果限制
$o=20;//定义偏移量
$i=0;//起始行计数器
对于($j=0;$j<$o;$j++){
接下来($xml->id);
}
foreach($xml->id作为$key=>$value){
$i++;
如果($i>$o){
//如果行号小于偏移量,则不执行任何操作。
}否则{
若($i==“$limit”){break;}//若行超出限制,则中断循环
//在这里做事
}
}
关于next()函数的更多信息:来自soulmerge的答案将在循环中重复一次。它应该是:
foreach (...
if ($i++ < $o) continue;
if ($i >= $o + $limit) break;
// do your stuff here
}
foreach(。。。
如果($i++<$o)继续;
如果($i>=$o+$limit)中断;
//在这里做你的事
}
请看这里:这更适合作为soulmerge答案下的注释,而不是自己的答案。这不是真的。因为他在前面的if中做了$i++
,所以你必须使用严格的上级,否则你会得到$limit-1
结果,而不是$limit
结果。
foreach (...
if ($i++ < $o) continue;
if ($i >= $o + $limit) break;
// do your stuff here
}