分组显示数组项
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>';}
输出:[与第一种方法相同]
我想在 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>';}
输出:[与第一种方法相同]