错误在php中创建多列而不是使用表

时间:2015-10-19 02:41:15

标签: php

我有一个示例列表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>

4 个答案:

答案 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>";
}

Example/Demo

<强>参考

答案 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++;
            }