Как я могу ограничить заявление foreach ()? Скажите, что я хочу, чтобы он запускал первые 2 «eaches» или что-то еще?
Вы можете использовать
break;
или
foreach() if ($tmp++ < 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++) { }
вы должны использовать оператор break
обычно это так используется
$i = 0; foreach($data as $key => $row){ if(++$i > 2) break; }
таким же образом, оператор continue существует, если вам нужно пропустить некоторые элементы.
В 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 }
Генераторы рок.
это лучшее решение для меня 🙂
$i=0; foreach() if ($i < yourlimitnumber) { $i +=1; }