PHP foreach массив получает первые 9 результатов, затем вторые 9 - PullRequest
6 голосов
/ 14 июля 2011

Используя PHP foreach, как бы получить только первые 9 результатов в одном foreach и только вторые 9 в другом.

Что-то вроде

foreach {$ shops [1 -9] как $ shop) {

 foreach {$shops[10 - 18] as
 $shop) {

Есть идеи?

Чудесный

Ответы [ 6 ]

9 голосов
/ 14 июля 2011

Использование array_slice():

foreach(array_slice($shops,0,9) as $shop){
   // etc.
}

foreach(array_slice($shops,9,9) as $shop){
   // etc.
}
3 голосов
/ 14 июля 2011

Использовать вместо этого for цикл?

for (int $i = 0; $i < 9; $i++)
{
    $shop = $shops[$i];
}

Тогда вы могли бы сделать еще один с $i = 10..19. Если вы должны использовать foreach, то увеличьте счетчик и break; или используйте array_slice, как предлагали другие.

1 голос
/ 14 июля 2011
foreach (array_chunk($shops, 9) as $section) {
    // Do some logic on each section
    foreach ($section as $shop) {
        // Do some logic on each shop
    }
}
1 голос
/ 14 июля 2011

Как насчет

foreach (array_slice($shops, 0, 9) as $shop) {
  ...
}

и

foreach (array_slice($shops, 9, 9) as $shop) {
  ...
}

??

0 голосов
/ 14 июля 2011

Вместо этого используйте петлю for.

for ($i = 0; $i < 9; $i++)
{
    $shop = $shops[$i];
}

for ($i = 9; $i < 18; $i++)
{
    $shop = $shops[$i];
}
0 голосов
/ 14 июля 2011

используя array_slice вы можете разделить ваш массив на два, тогда вы можете сделать это

$my_array = array('1','2',...,'18');

$first_array = array_slice($my_array,0,9);
$second_array = array_slice($my_array,9,18);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...