从中间开始继续前臂循环


Continue foreach loop from middle

我为每个循环都有这个:

  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)结果?

您甚至可以在循环之前分割数组$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)
  {
  }   
}

两种不同的方法:


使用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;
}

您可以在以下列之间切换:

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

另一个选项:

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

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

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

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

难道不使用普通的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 />";
}