显示组中的数组项

时间:2015-06-09 12:08:49

标签: php arrays loops while-loop grouping

我想在while循环中对项目进行分组(在div中包装多个项目),以便第一个项目位于一个div中,其余项目位于每个div中的4个项目的集合中。

问题在于物品的数量有所不同。我在循环中尝试了多种使用if condition的方法,但如果循环中的项数多于或少于预期,则会出现问题。然后它只是错过或添加额外的div

例如,如果我有10个项目,我正在尝试实现此输出:

<div class="group1">
item1
</div>

<div class="group2">
item2
item3
item4
item5
</div>

<div class="group3">
item6
item7
item8
item9
</div>

<div class="group4">
item10
</div>

无论

如何,都可以做到这一点

3 个答案:

答案 0 :(得分:0)

您将通过此代码获得输出,添加您的条件。

    <?php
$array=['item1','item2','item3','item4','item5','item6','item7','item8','item9','item10'];
$i=1;
$j=1;
foreach($array as $v){
    if($i==1){
        echo '<div class="group'.$j.'">'.$v;echo '</div>';
         $j++;
         echo '<div class="group'.$j.'">';
    }elseif($i==count($array)){
        $j++;
        echo '</div>';
        echo '<div class="group'.$j.'">'.$v.'</div>';
    }elseif($i%6==0){
        $j++;
       echo '</div>';
        echo '<div class="group'.$j.'">';
    }else {
        echo $v.'-';
    }

    $i++;
}

输出

<div class="group1">item1</div>
<div class="group2">item2-item3-item4-item5-</div>
<div class="group3">item7-item8-item9-</div>
<div class="group4">item10</div>

答案 1 :(得分:0)

使用此:

-1.Ind

答案 2 :(得分:0)

以下是使用current()array_slice()的主要功能方法,  array_chunk()implode()避免使用modulus arithmetic operator生成正确的结构和组编号:

代码:(Demo

$array=['item1','item2','item3','item4','item5','item6','item7','item8','item9','item10'];

// display 1st element on its own
echo '<div class="group1">',current($array),'</div>';

// group elements (2nd to end) in sets upto 4
foreach(array_chunk(array_slice($array,1),4) as $i=>$chunk){
    echo '<div class="group',$i+2,'">',implode('<br>',$chunk),'</div>';
}

输出:

<div class="group1">item1</div>
<div class="group2">item2<br>item3<br>item4<br>item5</div>
<div class="group3">item6<br>item7<br>item8<br>item9</div>
<div class="group4">item10</div>

*请注意,上述代码假定$array不会为空。如果$array中可能包含零个元素,那么我的处理行应该包含在检查一个或多个元素的条件中。

这是一个使用条件,模数和小算术来生成正确的结构和组编号的方法:

代码:(Demo

foreach($array as $i=>$v){
    if(!$i){                                       // $i is zero
        echo '<div class="group1">';               // first group
    }elseif($i%4==1){                              // $i is 1, 5, 9, etc.
        echo '</div>';                             // close previous group
        echo '<div class="group',(--$i/4)+2,'">';  // $i minus 1, divided by 4, plus 2
    }else{
        echo '<br>';                               // the "glue" between values
    }
    echo $v;                                       // display the value
}
echo '</div>';                                     // assumes the array is never empty...
                             // otherwise, finish with:  if(sizeof($array)){echo '</div>';}

输出: [与第一种方法相同]