我有一个基于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 |
任何帮助它如此赞赏
答案 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>";