我为每个循环都有这个:
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 />";
}