2009-11-01 5 views

Répondre

31

Vous pouvez utiliser

break; 

ou

foreach() if ($tmp++ < 2) { 
} 

(la deuxième solution est encore pire)

74

Il y a plusieurs façons, on est d'utiliser un compteur:

$i = 0; 
foreach ($arr as $k => $v) { 
    /* Do stuff */ 
    if (++$i == 2) break; 
} 

Autre façon serait de couper les 2 premiers éléments, ce n'est pas aussi efficace que:

foreach (array_slice($arr, 0, 2) as $k => $v) { 
    /* Do stuff */ 
} 

Vous pouvez également faire quelque chose comme ça (essentiellement le même que le premier foreach, mais avec pour):

for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) { 
} 
+9

le dernier serait très lent et mauvais. utilisez 1 ou 2 à la place. – mauris

+2

La première façon est la meilleure que je pense – goksel

+4

vous pouvez également utiliser $ k comme clé, si ($ k == 2) {break; } – Ruben

13

vous devez utiliser l'instruction break

habituellement ce Utilisons cette façon

$i = 0; 
foreach($data as $key => $row){ 
    if(++$i > 2) break; 
} 

de la même manière que l'instruction continue existe si vous devez ignorer certains éléments.

+1

devrait être> 2, sinon il va se casser avant que tout s'amuse :) – phidah

+0

tks @phidah J'ai édité ^^ – RageZ

4

c'est la meilleure solution pour moi :)

$i=0; 
foreach() if ($i < yourlimitnumber) { 

$i +=1; 
} 
8

En PHP 5.5+, vous pouvez le faire

function limit($iterable, $limit) { 
    foreach ($iterable as $key => $value) { 
     if (!$limit--) break; 
     yield $key => $value; 
    } 
} 

foreach (limit($arr, 10) as $key => $value) { 
    // do stuff 
} 

Generators roche.

+0

J'ai 5.5.12 et j'obtiens l'erreur "Appel à la limite de fonction indéfinie()" – Marko

+1

En dehors du point-virgule manquant (maintenant fixé) il [fonctionne comme prévu] (https://3v4l.org/VcqcT). – Tgr