使用foreach()创建一个表



我有以下PHP代码包含2 foreach

echo "<table class='table table-bordered'>";
foreach($resultOld as $key=>$value)
{
    foreach ($value as $key1 => $subjects) {
        $checked = $subjects;
        echo  "<tr><tr class="".$subjects."">$key1
            <input type='checkbox' class="".$subjects.""  value='checked' name="".$key1."JAN" $checked/> </tr>               
           </tr>" ;
    }
}
echo "</table>";

$resultOldfetchAll(PDO::FETCH_ASSOC)的输出,它包含一个二维数组$subjects将从数据库返回661个单词,这意味着$resultOld数组有661个元素。在每12个单元格之后,我想开始一个新的行(tr)。这意味着表中需要55行。如何使用PHP实现这一点?

如果您想在每12条记录之后生成一个新行,您需要使用计数器并检查计数-

$counter = 1;
echo "<table class='table table-bordered'>";
echo "<tr>"; //start the first row
foreach($resultOld as $key=>$value)
{
    foreach ($value as $key1 => $subjects) {
        // if the 13th cell, end last row, and start new row
        if ($counter%12==1){
                      echo "</tr><tr>";}
        $checked = $subjects;
        echo  "<td class="".$subjects."">$key1
            <input type='checkbox' class="".$subjects.""  value='checked' name="".$key1."JAN" $checked/> </td>" ;
        // increase counter
        $counter++;
    }
}
echo "</tr>"; // end last row
echo "</table>";

首先,注意你的HTML结构是错误的。我建议大家多想想这个步骤。也许布局一个单行<table> HTML结构之间的参考切片到PHP

下面是一个例子:

<table class="...">
<tbody> <!-- I recommend using the tbody tag -->
    <tr>
        <td>...</td>
    </tr>
</tbody>
</table>

有三件基本的事情需要考虑:

  1. 表体
  2. 列(即。细胞)

步骤1是打印表体。你做得很好:

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语句,但是性能差异可能很小,不值得花时间。

我希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新