ограничение количества циклов, выполняемых в php

У меня есть цикл foreach, который мне нужно ограничить первыми 10 элементами, а затем выйти из него.

Как мне это сделать?

foreach ($butters->users->user as $user) { $id = $user->id; $name = $user->screen_name; $profimg = $user->profile_image_url; echo "things"; } 

Поблагодарю также подробное объяснение.

Solutions Collecting From Web of "ограничение количества циклов, выполняемых в php"

Если вы хотите использовать foreach, вы можете добавить дополнительную переменную для управления количеством итераций. Например:

 $i=0; foreach ($butters->users->user as $user) { if($i==10) break; $id = $user->id; $name = $user->screen_name; $profimg = $user->profile_image_url; echo "things"; $i++; } 

Вы также можете использовать LimitIterator .

например

 $users = new ArrayIterator(range(1, 100)); // 100 test records foreach(new LimitIterator($users, 0, 10) as $u) { echo $u, "\n"; } 

Вы можете просто array_slice($butters->users->user, 0, 10) (первые 10 элементов).

Используйте счетчик циклов и break когда вы хотите выйти.

 $i = 0; foreach ($butters->users->user as $user) { $id = $user->id; $name = $user->screen_name; $profimg = $user->profile_image_url; echo "things"; if (++$i >= 10) { break; } } 

На 10-й итерации петля выйдет в конце.

Есть несколько вариантов этого, и одна вещь, которую вам нужно выбрать, – это то, хотите ли вы выполнить условие внешнего цикла или нет. Рассматривать:

 foreach (read_from_db() as $row) { ... } 

Если вы выйдете из вершины этого цикла, вы прочтете 11 строк. Если вы выйдете снизу, это будет 10. В обоих случаях тело цикла выполнило 10 раз, но выполнение этой дополнительной функции может быть тем, что вы хотите, а может и нет.

Если вы уверены в желании сохранить цикл foreach , добавьте счетчик:

 $count = 0; foreach ($butters->users->user as $user) { $id = $user->id; $name = $user->screen_name; $profimg = $user->profile_image_url; echo "things"; $count++; if ($count == 10) break; } 

поэтому каждый раз, когда выполняется ваш цикл, счетчик увеличивается и когда он достигает 10, цикл прерывается.

В качестве альтернативы вы, возможно, сможете переработать цикл foreach цикл for .

вы можете запустить счетчик перед вашим блоком foreach и проверить его в цикле и разбить, если счетчик равен 10,

 $count = 1; foreach ($butters->users->user as $user) { if($count == 10) break; $id = $user->id; $name = $user->screen_name; $profimg = $user->profile_image_url; echo "things"; $count++; } 

Мне очень нравится ответ VolkerK, но я не понимаю, почему он создает новый итератор, когда, скорее всего, у вас будет существующий массив. Просто хочу поделиться тем, как я это сделал.

 $arrayobject = new ArrayObject($existingArray); $iterator = $arrayobject->getIterator(); foreach(new LimitIterator($iterator, 0, 10) as $key => $value) { // do something }