Come posso limitare un'istruzione foreach()? Diciamo che voglio solo che esegua i primi 2 "ciascuno" o qualcosa del genere?PHP: limite foreach() istruzione?
24
A
risposta
31
è possibile utilizzare
break;
o
foreach() if ($tmp++ < 2) {
}
(la seconda soluzione è ancora peggio)
74
Ci sono molti modi, uno è quello di utilizzare un contatore:
$i = 0;
foreach ($arr as $k => $v) {
/* Do stuff */
if (++$i == 2) break;
}
Altra via sarebbe quello di tagliare i primi 2 elementi, questo non è così efficiente, anche se:
foreach (array_slice($arr, 0, 2) as $k => $v) {
/* Do stuff */
}
Si potrebbe anche fare qualcosa di simile (fondamentalmente lo stesso del primo foreach, ma con la):
for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) {
}
13
4
questa è la soluzione migliore per me :)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}
8
In PHP 5.5 +, si può fare
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 roccia.
l'ultimo sarebbe molto lento e cattivo. utilizzare 1 o 2 invece. – mauris
Il primo modo è il migliore penso che sia – goksel
puoi anche usare $ k come chiave, if ($ k == 2) {break; } – Ruben