限制和偏移foreach循环

时间:2009-11-05 12:05:02

标签: 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.
    }else{ 
    if($i == "$limit"){break;} //if line is over limit, break out of loop
    //do stuff here
    }
}

所以在这个例子中,id想要从结果20开始,只显示10个结果,然后突破循环。虽然不行。有什么想法吗?

4 个答案:

答案 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

相关问题