2010-10-02 27 views
10

Temel olarak, foreach döngüsünde dizinin ilk 10 yinelemesini atlayacak bir şeye ihtiyacım var.Özyineleri atlamak için foreach'ı alma

foreach($aSubs as $aSub){ 
    if($iStart > '0') 
    //Skip first $iStart iterations. Start at the next one 
} 

Teşekkür

cevap

25
bir sayaç başlatın ve ilk on döngüler atlamak için continue kullanmak

:

$counter = 0 ; 
foreach($aSubs as $aSub) { 
    if($counter++ < 10) continue ; 
    // Loop code 
} 
+1

kusursuz çalışıyor. Ne kadar güzel bir fikir. Teşekkürler – tmartin314

2

kullanma yineleyiciler:

$a = array('a','b','c','d'); 
$skip = 2; 
foreach (new LimitIterator(new ArrayIterator($a), $skip) as $e) 
{ 
    echo "$e\n"; 
} 

Çıktı:

c 
d 

ya (dizi 0 tam sayı tuşları vardır .. n-1 ise) dizini kullanarak:

foreach ($a as $i => $e) 
{ 
    if ($i < $skip) continue; 
    echo "$e\n"; 
} 
0

ise $ ASUBlaryineleyici uygulayan bir sınıfın bir amacı değildir ve Aslında

$count = count($aSubs); 
for($i = 9, $i < $count; $i++) { 
    // todo 
} 
0

, sen foreach döngü li faydalanarak kullanarak başka değişken $counter ilan etmeye gerek yoktur: endeksler, kolay olurdu için sıralı tamsayılar (sıfır başlayarak) vardır ke bu:

foreach ($aSubs as $index => $aSub) { 
    if ($index < 10) continue; 
    // Do your code here 
} 

Bu, foreach döngüsünün dışında başka bir değişken bildirmekten daha iyi bir yoldur.

İlgili konular