在另一个Stack Overflow帖子的帮助下,我现在已经让动态表正常工作了。 我正在循环一个数组并创建多个表。这很有效。
这是我正在使用的代码:
foreach ($id as $k => $v) {
$maxcols = $cols[$unit[$k]];
$maxid = $cells[$unit[$k]];
$startid = 1;
// maxcols = 4 // maxid = 8
echo "<table id='table$v'><tr>\n";
for ($i = 1;$i<=ceil($maxid/$maxcols);$i++) {
echo "<tr>\n";
for ($j=1;$j<=$maxcols;$j++) {
if ($startid <= $maxid)
echo " <td class='mark'>ID".$startid++."</td>\n";
else
echo " <td class='mark'> </td>\n";
}
echo "</tr>\n<tr>\n";
for ($j=1;$j<=$maxcols;$j++) {
$p = ($i==1) ? $j : ($j+$maxcols);
echo "<td id='$p'></td>\n";
}
echo "</tr>\n";
}
echo "</table>\n";
}
如果maxcols = 4且maxid = 8,我会得到一个如下所示的表:
查看该表的代码我可以看到每个TD都有一个与标题ID值匹配的ID。例如:第1行第2列TD ID = 2标头= ID2
使用以下方法创建ID值:
$p = ($i==1) ? $j : ($j+$maxcols);
如果我更改maxcols = 2,那么我会得到一个如下所示的表:
但是,TD ID值与标头ID不匹配。他们去了
1,2
3,4
3,4
3,4
如何让每个单元格都具有正确的TD ID?
答案 0 :(得分:1)
简单的解决方案:
$maxcols = $cols[$unit[$k]];
$maxid = $cells[$unit[$k]];
$startid = 1;
$idCounter = 1;
…
…
for ($j=1;$j<=$maxcols;$j++) {
echo "<td id='$idCounter'></td>\n";
$idCounter++;
}
使用$j
,$i
和$maxcols
可能是一种方法,但为什么会让事情变得复杂。
如果您真的只想将id分配给具有值的单元格,则可以进行此更改
echo "<td id='".($idCounter<=$maxid ? $idCounter : "")."'></td>\n";