foreach codeigniter计数索引,用于将result()生成到html表中

时间:2015-12-03 14:09:43

标签: html codeigniter

我有一个基于result()的活动记录codeigniter。 结果是有28条记录 我打算根据这条记录创建一个表。 我的问题是,我想制作7行和4列以获得更多可读性。 我的代码是这样的:

<td colspan="4">
   <?php
        foreach ($damage_codes as $row) {
            // Create a column. <td>
            // create a row <tr>
            // When this column have four row, create a next column  again.
            // So on, so on 

              echo  . $row->DAMAGE_ID . " " . $row->NAMA_DAMAGE ;
        }
        ?>
    </td>

我必须管理它,但不适合我自己的报告。 这是我现在的代码

<?php 
    $i = 0;
    foreach ($damage_codes as $row) : ?>
        <?= ($i % 4 == 0) ? "<tr>" : false; ?>
        <?= "<td>[".$row->DAMAGE_ID . "]" . $row->NAMA_DAMAGE . "</td>"; ?>

    <?php 
    $i++;
    endforeach;
    echo "</tr>"?>

和输出如下:

| 1  | 2  | 3  | 4  |
| 5  | 6  | 7  | 8  |
| 9  | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 |

怎么样,我能这样做:

| 1  | 5  | 9  | 13  |
| 2  | 6  | 10 | 14  |
| 3  | 7  | 11 | 15 |
| 4  | 8  | 12 | 16 |

任何帮助它如此赞赏

2 个答案:

答案 0 :(得分:0)

使用foreach循环之外的计数器变量来跟上它。

这样的事情:

<table>
    <?php 
        $i = 0;
       foreach ($damage_codes->result() as $row): 
    ?>
          <?= ($i % 4 == 0) ? "<tr>" : false; ?>
                <?= "<td>".$row->DAMAGE_ID . " " . $row->NAMA_DAMAGE . "</td>;
          <?= ($i % 4 == 0) ? </tr>" : false; ?>
     <?php
          $i++;
       endforeach;
     ?>
</table>

答案 1 :(得分:0)

也许这会对你有所帮助

更新版本:

$arr = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);

$md_arr = array();
$cols = 4;
$i = 0;
$col = 0;
$row = 0;

// first convert your single array to a multidimensional one
foreach ($arr as $k=>$v) {

    $i++;
    $md_arr[$row][$col] = $v;
    $col++;

    if( $i % $cols == 0 ){
        $row++;
        $col = 0;
    } 

}

function transpose($array) {
    array_unshift($array, null);
    return call_user_func_array('array_map', $array);
}

// then transpose your new multi array
$md_arr = transpose( $md_arr );

// last render the table with the transposed array
echo "<table>";
foreach ($md_arr as $k=>$v) {
    echo "<tr>";
    foreach ($v as $kk=>$vv) {
        echo "<td>";
        echo $md_arr[ $k ][ $kk ];
        echo "</td>";
    }
    echo "</tr>";
}
echo "</table>";