Jak mogę ograniczyć instrukcję foreach()? Powiedz, że chcę tylko uruchomić pierwsze 2 "eaches" czy coś takiego?PHP: Limit foreach() instrukcja?
24
A
Odpowiedz
31
Można użyć
break;
lub
foreach() if ($tmp++ < 2) {
}
(drugie rozwiązanie jest nawet gorzej)
74
Istnieje wiele sposobów, jedno jest użycie licznika:
$i = 0;
foreach ($arr as $k => $v) {
/* Do stuff */
if (++$i == 2) break;
}
Inny sposób byłoby pokroić 2 pierwsze elementy, to nie jest tak skuteczny, choć:
foreach (array_slice($arr, 0, 2) as $k => $v) {
/* Do stuff */
}
Można też zrobić coś takiego (w zasadzie taki sam jak pierwszy foreach, ale z tytułu):
for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) {
}
13
4
jest najlepszym rozwiązaniem dla mnie :)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}
8
W PHP 5.5+, można zrobić
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 skałę.
ten ostatni byłby bardzo powolny i zły. zamiast tego użyj 1 lub 2. – mauris
Pierwsza metoda jest najlepsza myślę, że – goksel
możesz również użyć $ k jako klucza, jeśli ($ k == 2) {przerwa; } – Ruben