Comment puis-je limiter une instruction foreach ()? Dis que je veux seulement qu'il exécute les 2 premiers 'eaches' ou quelque chose?
Vous pouvez soit utiliser
break;
ou
foreach() if ($tmp++ < 2) {
}
(la deuxième solution est encore pire)
Il existe de nombreuses façons, l'une consiste à utiliser un compteur:
$i = 0;
foreach ($arr as $k => $v) {
/* Do stuff */
if (++$i == 2) break;
}
Une autre façon serait de découper les 2 premiers éléments, mais ce n'est pas aussi efficace:
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 for):
for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) {
}
Dans PHP 5.5+, vous pouvez 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
}
Générateurs rock.
c'est la meilleure solution pour moi :)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}