使用模数 (%)
在每 10 个单元格之后,如果添加一个新单元格,则关闭当前行并先打开一个新行,然后再输出该单元格。
<?php
$result = mysqli_query($con,"SELECT * FROM table");
echo '<table width="100%" border="1px"><tr>';
$cell = 0;
while($row = mysqli_fetch_array($result))
{
if ($cell++ % 10 == 0 && $cell > 1)
{
?>
</tr><tr>
<?php
}
?>
<td width="10%"><?php echo $row['Name']; ?></td>
<?php
}
echo "</tr></table>";
mysqli_close($con);
?>
额外的条件&& $cell > 1
似乎有点奇怪,但没有它,你会得到一个空行开始。++
通过放在前面来消除它$cell
会导致第一行是 9 个单元格而不是 10 个。放在$cell > 0 &&
模前面将导致单元格永远不会增加,因为表达式的第一部分总是错误的。在输出单元格后移动if
执行它,会导致以空行结束的风险。它可以使用do..while
循环来解决,但是如果您至少有一行,则必须预先检查。
长话短说:使用上面的代码。:)
使用一个简单的计数器并在每一行之后重置它
我认为没有模数它更具可读性,尽管您必须初始化$cell
为 -1 以防止第一行成为 9 个单元格。不过,我认为这更清洁:
<?php
$result = mysqli_query($con,"SELECT * FROM table");
echo '<table width="100%" border="1px"><tr>';
$cell = -1;
while($row = mysqli_fetch_array($result))
{
if (++$cell == 10)
{
$cell = 0;
?>
</tr><tr>
<?php
}
?>
<td width="10%"><?php echo $row['Name']; ?></td>
<?php
}
echo "</tr></table>";
mysqli_close($con);
?>