Ограничить ответ многомерного массива - PullRequest
0 голосов
/ 30 января 2012

Имея 3 многомерных массива, которым я делаю foreach, как я могу ограничить многомерный отклик внутри foreach из X элементов, скажем, 20 .

Код:

$i = 0;
foreach ($value->channel->item as $item)
{
    $data['data'][$keySection]['item1'][$i]['url']   = $item->url;
    $data['data'][$keySection]['item1'][$i]['title'] = $item->title;
    $data['data'][$keySection]['item1'][$i]['img']   = $item->thumb;
    $i++;
}

, где $value содержится в

foreach ($homeData as $keySection => $valueSection)
{
    foreach($valueSection as $key => $value)
    {
        switch ($key)
        {

Я пытался применить некоторые for оба в foreach ($value->channel->item as $item) как снаружи, но я просто могу 'чтобы он работал правильно, я получаю либо удвоенные результаты, либо не работаю вообще.

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

Редактировать: $i имеетс этим ничего не поделать ... Мне нужно ограничить $value->channel->item, где item содержит X результатов

Edit2 : $i для $homeData, где $homeData содержит тризначения, и каждое из них позже будет содержать 3 различных значения $value->channel->item, поэтому, если элемент содержит 20 результатов, будет 3x20 = 60, и $ i будет разделять каждые 20 результатов ...

Edit3 : хорошо, теперь я понял ... извините за недоразумение

Ответы [ 2 ]

2 голосов
/ 30 января 2012

После запуска foreach добавьте:

if($i > 19) {
    break;
}

Это проверяет, больше ли $ i, чем 19 (что означает 20 итераций), а затем прерывает этот цикл foreach. Подробнее о перерыве здесь .

0 голосов
/ 30 января 2012

Вы можете сделать это как:

$i = 0;
foreach ($value->channel->item as $item)
{
     if($i > 19) {
       break;
     }
     $data['data'][$keySection]['item1'][$i]['url']   = $item->url;
     $data['data'][$keySection]['item1'][$i]['title'] = $item->title;
     $data['data'][$keySection]['item1'][$i]['img']   = $item->thumb;
     $i++;
}

Это даст вам 20 предметов.

Надеюсь, это то, что вы хотите:)

...