при ограничении количества раз цикл работает в php

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

Как я сделал бы это здесь?

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

Ценил бы подробное объяснение также.

9
задан mrpatg 4 January 2010 в 08:28
поделиться

6 ответов

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

$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++;  
} 
39
ответ дан 4 December 2019 в 05:54
поделиться

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

например

$users = new ArrayIterator(range(1, 100)); // 100 test records
foreach(new LimitIterator($users, 0, 10) as $u) {
  echo $u, "\n";
}
15
ответ дан 4 December 2019 в 05:54
поделиться

Используйте счетчик цикла и 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 раз, но выполнение этой дополнительной функции может быть то, что вы хотите, или нет.

.
2
ответ дан 4 December 2019 в 05:54
поделиться

вы можете запустить счетчик перед вашим 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++;
} 
1
ответ дан 4 December 2019 в 05:54
поделиться

Если вы уверены, что хотите сохранить цикл 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, чтобы он был для цикла, если это возможно.

.
1
ответ дан 4 December 2019 в 05:54
поделиться
[

] Можно просто выполнить итерацию по []array_slice($butters->users->user, 0, 10)[] (первые 10 элементов)[

].
3
ответ дан 4 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: