Comment puis-je limiter une instruction foreach()? Dites-moi que je veux seulement courir les 2 premiers 'ou quelque chose?PHP: Limite foreach() instruction?
24
A
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++) {
}
13
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.
le dernier serait très lent et mauvais. utilisez 1 ou 2 à la place. – mauris
La première façon est la meilleure que je pense – goksel
vous pouvez également utiliser $ k comme clé, si ($ k == 2) {break; } – Ruben