2012-03-10 2 views
0

Я это для каждого цикла:Продолжить цикл Еогеаспа от среднего

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

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

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

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

ответ

3

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

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

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

EDIT:. Вот общий пример: (В случае, если у вас есть более 50 элементов)

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

    } 

} 
+0

хороший Array_chuck. +1 – FlyingCat

+0

Я использовал его только один раз и был удивлен, увидев его, никогда не забывал об этом с тех пор. –

+0

Большое спасибо, работает как шарм! Поскольку я новичок в php, array_chunk для меня совершенно новый :) – DadaB

0

Вы можете переключаться между колоннами:

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

Другая опция:

$i=0; 
foreach($downloads as $dl) { 
$i++; 
if ($i <= 25){ 
    //first 25 
}else{ 
    //rest 
} 
} 
0

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

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

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

0

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

Тогда вы должны иметь что-то более или менее, как это:

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

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

два различных подхода:


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

$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; 
} 
Смежные вопросы