首先,请注意您的 HTML 结构是错误的。我建议考虑这个是多一点的步骤。也许布局单行<table>
HTML 结构以供在将其切片到 PHP 之间进行参考
这是一个例子:
<table class="...">
<tbody> <!-- I recommend using the tbody tag -->
<tr>
<td>...</td>
</tr>
</tbody>
</table>
需要考虑三个基本问题:
- 表体
- 行
- 列(即单元格)
第一步是打印表体。你在这里做得很好:
echo '<table class="table table-bordered">';
echo '<tbody>';
//...
<echo '</tbody>';
echo '</table>';
第 2 步是遍历你的行
echo '<table class="table table-bordered">';
echo '<tbody>';
// Loop Through Rows
foreach($resultOld as $key=>$value)
{
echo '<tr>'; // start a new row
// ...
echo '</tr>'; // end a row
}
<echo '</tbody>';
echo '</table>';
第 3 步是遍历表格的每一列或单元格:
// STEP 1
echo '<table class="table table-bordered">';
echo '<tbody>';
// STEP 2
// Loop Through Rows
foreach($resultOld as $key=>$value)
{
echo '<tr>'; // start a new row
// STEP 3
foreach ($value as $key1 => $subjects) {
$checked = $subjects;
// Start a new column/cell
echo '<td class="' . $subjects . '">';
// Print cell contents
echo $key1;
echo '<input type="checkbox" class="' . $subjects . '" value="checked" name="' . $key1 . 'JAN" '. $checked . '/>';
// End column/cell
echo '</td>';
} // END STEP 3
echo '</tr>'; // end a row
} // END STEP 2
echo '</tbody>';
echo '</table>';
// END STEP 1
关于您的代码的一些注释:
- 您正在打印 2 个表格行,而不是打印一个表格行和一个表格列(即:
<tr><tr>
而不是<tr><td>
;
- 您需要打印第一个循环内的行,而不是第二个循环。
- 第二个嵌套循环打印出您的第二个维度或列。
对我来说,我喜欢在打印 HTML 时使用单引号 (')。我这样做是因为我在 HTML 属性中使用了双引号 (")。这使我可以避免必须转义双引号字符并导致难以阅读的 '\""' 情况,这可能会导致简单的语法错误。
此外,当遇到打印 HTML 的问题时,将 HTML 分解为多个 echo/print 语句可以帮助您构建代码并解决问题。一旦它开始工作,您可以返回并将它们重构为单个 echo 语句,但是性能差异可能很小,以至于不值得花时间。
我希望这会有所帮助!