我有一个示例列表1,2,3,4,5,6,7,8
我想创建格式为
的3个列1 4 7
2 5 8
3 6
这是我的代码
$columns = 3;
$rows = ceil(count($lists) / $columns);
foreach ($lists as $key => $value) {
if($key % $rows == 0) {
echo '<div class="col-md-4">';
}
echo $value;
if($key % $rows == 0) {
echo '</div>';
}
}
这是结果错误
<div class="col-md-4">1</div>
2
3
<div class="col-md-4">4</div>
5
6
<div class="col-md-4">7</div>
8
如何修复结果:
<div class="col-md-4">1 2 3</div>
<div class="col-md-4">4 5 6</div>
<div class="col-md-4">7 8</div>
答案 0 :(得分:1)
此解决方案适用于您的上次修改:
<div class="col-md-4">1 2 3</div>
<div class="col-md-4">4 5 6</div>
<div class="col-md-4">7 8</div>
所以,代码是:
$lists = array(1,2,3,4,5,6,7,8);
$columns = 3;
$rows = ceil(count($lists) / $columns);
echo '<div class="col-md-4">';
foreach($lists as $key => $value) {
if ($key % $rows == 0 && $key != 0) {
echo '</div><div class="col-md-4">'.$value.' ';
} else {
echo $value.' ';
}
}
echo '</div>';
答案 1 :(得分:0)
...因为你只是将div添加到每三个值。我想这就是你想要的
$columns = 3;
$rows = ceil(count($lists) / $columns);
foreach ($lists as $key => $value) {
if($key % $rows == 0) {
echo '<div class="row">';
}
echo '<div class="col-md-4">' . $value . '</div>';
if($key % $rows == 0) {
echo '</div>';
}
}
答案 2 :(得分:0)
实现你所追求的目标要简单得多。假设您有以下列表:
$list = '1,2,3,4,5,6,7,8';
您所要做的就是将您的字符串(列表)分解为一个数组,并将其分成3组。现在,这简化了打印行时需要执行的操作:
$chunks = array_chunk(explode(',', $list), 3);
foreach($chunks as $row){
echo "<div class='row'>";
foreach($row as $value){
echo "<div class='col-md-4'>{$value}</div>";
}
echo "</div>";
}
<强>参考强>
答案 3 :(得分:0)
假设您需要修复3列,这里是代码(您可能必须根据列要求修复代码)
$columns = 3;
$lists = array(1,2,3,4,5,6,7,8);
$rows = ceil(count($lists) / $columns);
$i = 0;
while($i < $rows)
{
echo "<div class=col-xs-4>".@$lists[$i]."</div>";
echo "<div class=col-xs-4>".@$lists[$i+$rows]."</div>";
echo "<div class=col-xs-4>".@$lists[$i+$rows+$rows]."</div>";
$i++;
}