假设我想循环遍历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.
}else{
if($i == "$limit"){break;} //if line is over limit, break out of loop
//do stuff here
}
}
所以在这个例子中,id想要从结果20开始,只显示10个结果,然后突破循环。虽然不行。有什么想法吗?
答案 0 :(得分:6)
那里有多个错误。它应该是
foreach (...
if ($i++ < $o) continue;
if ($i > $o + $limit) break;
// do your stuff here
}
答案 1 :(得分:1)
soulmerge的回答将经历多次循环。它应该是:
foreach (...
if ($i++ < $o) continue;
if ($i >= $o + $limit) break;
// do your stuff here
}
答案 2 :(得分:0)
if($i == $limit+$o){break;}
你应该在$ o
之前使用$limit
答案 3 :(得分:0)
您可以对您的元素数组使用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
}
}
有关next()函数的更多信息:http://php.net/manual/en/function.next.php