Как я могу ограничить оператор foreach()? Скажите, что я хочу, чтобы он запускал первые 2 "eaches" или что-то еще?
PHP: ограничение для foreach()?
Ответ 1
Вы можете использовать
break;
или
foreach() if ($tmp++ < 2) {
}
(второе решение еще хуже)
Ответ 2
Существует много способов: использовать счетчик:
$i = 0;
foreach ($arr as $k => $v) {
/* Do stuff */
if (++$i == 2) break;
}
Другим способом было бы срезать первые 2 элемента, но это не так эффективно:
foreach (array_slice($arr, 0, 2) as $k => $v) {
/* Do stuff */
}
Вы также можете сделать что-то вроде этого (в основном то же самое, что и первый foreach, но с):
for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) {
}
Ответ 3
вы должны использовать оператор break
обычно используется таким образом
$i = 0;
foreach($data as $key => $row){
if(++$i > 2) break;
}
тем же способом continue утверждение существует, если вам нужно пропустить некоторые элементы.
Ответ 4
В PHP 5.5+ вы можете сделать
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 rock.
Ответ 5
это лучшее решение для меня:)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}