我有一个简单的表,有大约80行,我使用PHP动态填充。我想要做的是为每列布局这些行的块。所以,如果我有80行,我想要4列20行左右,也许最后一列的数量越来越少,具体取决于总行数。总行数可以改变!
我无法想出一个不会弄乱的实现方法!任何人都知道我可以实现这一点的简单方法。
我尝试使用计数器,因为我循环数据以填充表格,当达到20的倍数时移动到下一个块但是这对我不起作用,因为我剩下额外的行。
foreach($indexes as $index){
$counter++;
echo '<tr>';
if($counter > 20){
$multiplier = $counter / 20;
$head = '<td></td>';
for($i=1; $i<$multiplier; $i++){
$head .= '<td></td>';
}
}
if($counter < 20){
$head = '';
}
echo "$head<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>";
echo '</tr>';
}
感谢大家的帮助
答案 0 :(得分:1)
我愿意:
$nbCols = 4;
$nbRows = count($indexes)/$nbCols;
for($row=0; $row<$nbRows; $row++) {
echo "<tr>";
for($i=0; $i<$nbCols; $i++) {
$index = $indexes[$row + ($i*$nbRows)];
echo "<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>";
}
echo "</tr>";
}
答案 1 :(得分:0)
你不想看到你师的剩余部分并处理它吗?
if($counter % 20 == 0){
// You've no remainder
}else{
// Do another loop to output the odd rows
}
或者您可以% 2 == 0
查看它是否均匀,然后将整个结果乘以10。
请务必查看ceil()
和floor()
,以确保您的行数是一个整数。
答案 2 :(得分:0)
如果您不介意拥有这种单元格顺序:
1 2 3 4
5 6 7 8
您可以在循环中使用<div style='float:left'>$cellValue</div>
而不使用表格。