2010-10-02 4 views
10

J'ai fondamentalement besoin de quelque chose à l'intérieur d'une boucle foreach qui ignorera les 10 premières itérations du tableau.Obtenir foreach pour ignorer les itérations

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

Merci

Répondre

25

Lancer un compteur et utiliser continue pour sauter les dix premières boucles:

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

qui fonctionne parfaitement. Quelle bonne idée. Merci – tmartin314

2

itérateurs Utilisation:

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

Sortie:

c 
d 

ou en utilisant l'index (si le tableau a des touches entières de 0 .. n-1):

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

Si $ ASUP est pas un objet d'une classe qui implémente Iterator, et les indices sont des nombres entiers (commençant à zéro), il serait plus facile à:

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

en fait, vous n'avez pas besoin de déclarer une autre $counter variable en utilisant l'avantage de foreach boucle li ke this:

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

Ceci est une meilleure façon que de déclarer une autre variable en dehors de la boucle foreach.

Questions connexes