Продолжить цикл foreach от середины - PullRequest
0 голосов
/ 10 марта 2012

У меня есть это для каждого цикла:

  foreach($downloads as $dl) { 
echo seosvelniau2($dl['title']);
}

По умолчанию это дает мне 50 результатов, есть ли способ разделить этот цикл foreach на два (1-25) и (26-50), чтобы я мог поместить оба в два отдельных столбца таблицы? Я знаю, что я могу сделать цикл, чтобы показать только первые 25 результатов, как это:

 $i=0;
foreach($downloads as $dl) { 
 $i++;
    echo seosvelniau2($dl['title']);
if ($i == 25)
break;
    }

а как сделать второй цикл, чтобы показать (26-50) результаты?

Ответы [ 6 ]

3 голосов
/ 10 марта 2012

Вы можете разделить массив $downloads еще до цикла. (Используя array_chunk)

$Chunks = array_chunk($downloads , 25);
foreach($Chunks[0] as $dl)
{
       //Group 1
}

foreach($Chunks[1] as $dl)
{
    ///Group2
}

РЕДАКТИРОВАТЬ: Вот общий пример: (Если у вас более 50 элементов)

$Chunks = array_chunk($downloads , 25);
foreach($Chunks as $oneChunk)
{
  //New group of 25 elements.
  foreach($oneChunk as $dl)
  {

  }   

}
1 голос
/ 10 марта 2012

Два разных подхода:


Используйте каждый для перебора массива.

$i = 0;
while(list($id, $item) = each($array)) {
    echo $item;
    if (++$i == 25) { break; }
}

while(list($id, $item) = each($array)) {
    echo $item;
}

Если вам не нужен этот массив после завершения цикла, вы можете просто сдвинуть элементы:

$i = 0;
while (++$i < 25 && count($array)) {
    $item = array_shift($array);
    echo $item;
}

foreach ($array as $item) {
    echo $item;
}
0 голосов
/ 10 марта 2012

Разве вы не использовали бы обычный цикл for вместо foreach?Затем вы можете определить начальную и конечную точки вручную, примерно так.

Тогда у вас должно быть что-то более или менее похожее на это:

for ($i=1; $i<=25; $i++)
{
    echo "The number is " . $i . "<br />";
}

for ($i=26; $i<=50; $i++)
{
    echo "The number is " . $i . "<br />";
}
0 голосов
/ 10 марта 2012

Если вы в процессе рисования таблицы HTML и вам нужно переключить td, просто сделайте что-то вроде этого:

for ( $i = 0; $i < count( $downloads ); $i++ )
{
    echo seosvelniau2( $downloads[ i ][ 'title' ] );
    if ( $i % 25 == 0 )
    {
        echo( '</td><td>' );
    }
}

Это создаст новые столбцы каждые 25 значений.

0 голосов
/ 10 марта 2012

Другой вариант:

$i=0;
foreach($downloads as $dl) { 
 $i++;
 if ($i <= 25){
  //first 25
 }else{
  //rest
 }
}
0 голосов
/ 10 марта 2012

Вы можете переключать столбцы между:

$i = 0;
foreach ($downloads as $dl) {
    if (++$i === 25) echo '</tr><tr>';
    echo seosvelniau2($dl['title']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...