我想在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>
无论
如何,都可以做到这一点答案 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>';}
输出: [与第一种方法相同]