limit ve ofset foreach döngüleri

3 Cevap

I XML düğümleri arasında döngü istiyorum ama ilk 10 görmezden ve daha sonra 10 i kapmak sayısını sınırlamak istiyorsanız söyleyin.

$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
	}
}

Daha sonra döngü patlak Yani bu örnekte, id sonucu 20 başlamak istiyorum, ve sadece 10 sonuçlar göstermektedir. Onun olsa çalışma değil. Herhangi bir düşünce?

3 Cevap

Birden fazla hata vardır vardır. Bu olmalı

foreach (...
    if ($i < $o) continue;
    if ($i++ > $o + $limit) break;
    // do your stuff here
}

Sen elemanlarının sizin dizi için sonraki () işlevini kullanabilirsiniz:

$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 () işlevi hakkında daha fazla bilgi: http://php.net/manual/en/function.next.php

if($i == $limit+$o){break;} 

Eğer $limit $ o önce varılması neden kullanmalısınız