У меня есть цикл foreach, который я должен ограничить первыми 10 объектами, тогда убегают из него.
Как я сделал бы это здесь?
foreach ($butters->users->user as $user) {
$id = $user->id;
$name = $user->screen_name;
$profimg = $user->profile_image_url;
echo "things";
}
Ценил бы подробное объяснение также.
Если вы хотите использовать форах, вы можете добавить дополнительную переменную для управления количеством итераций. Например:
$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";
}
Используйте счетчик цикла и 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-блоком и проверить его в цикле и сломать, если счетчик равен 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++;
}
Если вы уверены, что хотите сохранить цикл 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
, чтобы он был для
цикла, если это возможно.
] Можно просто выполнить итерацию по []array_slice($butters->users->user, 0, 10)[
] (первые 10 элементов)[