分组显示数组项

Display array items in groups

我想在 while 循环中对项目进行分组(将多个项目包装在一个 div 中),以便第一个项目在一个 div 中,其余项目在 4 个一组中每个 div.

中的项目

问题是物品的数量不同。我在循环中尝试了多种使用 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>

如何做到这一点

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

    <?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>

使用这个:

$array = array('item1','item2','item3','item4','item5','item6','item7','item8','item9','item10');
$i = 1;
$j = 1;
echo $div = '<div class="group'.$j.'">';
foreach ($array as $value) {
    if($i==1){
        echo $value.'<br/>';
        echo '</div>';
    }elseif($i%4==2){
        $j++;
        echo '</div>

        <div class="group'.$j.'">';
        echo $value.'<br/>';
    }else{
        echo $value.'<br/>';
    }
    $i++;
}

这是使用 current(), array_slice() 的主要功能方法, array_chunk(), and implode() that avoids using a 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 中可能有零个元素,那么我的处理行应该包含在检查 1 个或多个元素的条件中。


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

代码:(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>';}

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