从中间继续foreach循环

时间:2012-03-10 19:06:30

标签: php foreach

我为每个循环都有这个:

  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 个答案:

答案 0 :(得分:3)

您甚至可以在循环之前划分数组$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 :(得分:1)

两种不同的方法:


使用each迭代数组。

$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;
}

答案 2 :(得分:0)

您可以在两者之间切换列:

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

答案 3 :(得分:0)

另一种选择:

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

答案 4 :(得分:0)

如果您正在制作HTML表格,并且需要切换td,请执行以下操作:

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

这将每25个值创建一个新列。

答案 5 :(得分: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 />";
}