为什么foreach循环跳过html表中的一个值?

时间:2019-07-08 17:01:48

标签: php html

我正在尝试使用PHP foreach循环以html显示数据。返回查询结果后,通过调用PDOStatement::fetchAll获得数据数组(下面的代码中的$studentHistory)。 但是,当我使用echo在foreach循环中写出html时, 内循环中的值跳过一个迭代。

echo '<table>
      <tr>
      <th>Type</th>
      <th>STUDENT ID</th>
      <th>ROOM ID</th>
      <th>DATE</th>
      <th>Description</th>
      </tr>
      ';
foreach ($studentHistory as $item=>$row)
{
    echo "<tr>";
    foreach($row as $value)
    {
        echo "<td style='width: 150px; border: 1px solid black;>".$value."</td>";
    }
    echo "</tr>";
}
echo '</table>';

如果我替换内部循环以在不使用HTML的情况下进行回显,则会显示所有数据:

...
foreach($row as $value)
{
    echo $value." ";
}
...

我正在使用PDO并运行MySQL 5。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

您缺少td样式属性值的右引号。

正如@Always Sunny在其评论中特别指出的那样,内循环的正确代码行如下:

echo "<td style='width: 150px;border: 1px solid black;'>".$value."</td>";

通常,如果通过PHP的回显打印无效的HTML,输出将不会正确显示。