我有一个html表,我使用一些循环来获取一些数据,这些数据以这种方式显示:
<tr><td>Data</td></tr>
... next loop
但我不想每2或甚至3个循环关闭表行(tr)。所以数据可能如下所示:
<tr>
<td>Data</td>
<td>Data1</td>
<td>Data2</td>
</tr>
...next loop...
你会帮我这个吗?
答案 0 :(得分:7)
如果你的循环中有一些计数器,你可以使用模数。
如果你将它除掉,它基本上就是数字的剩余部分。
示例:
for($i = 1; $i < 11; $i++) {
if ($i % 2 === 0) {
print('this is printed every two times');
}
if ($i % 3 === 0) {
print('this is printed every three times');
}
}
如果您使用foreach()
,您应该自己制作一个计数器(正如Link所说,如果它包含很好的增量键,你也可以使用数组的key
):
$i = 1;
foreach($array as $item) {
if ($i % 2 === 0) {
print('this is printed every two times');
}
if ($i % 3 === 0) {
print('this is printed every three times');
}
$i++;
}
或者在您的具体情况下,它看起来像:
print('<tr>');
$i = 1;
foreach($array as $item) {
if ($i % 3 === 0) {
print("</tr>\n<tr>");
}
print("<td>$item</td>\n");
$i++;
}
print('</tr>');
以上只是一个基本的例子。
您还应检查列数是否平衡,如果不是,请添加colspan或空列以平衡它。
答案 1 :(得分:4)
使用modulo(%)运算符始终是解决上述问题的绝佳解决方案。 由于您没有提供有关实现语言的详细信息,因此我冒昧地向您提供了一个如何完成它的php示例。
<?php
$breakPoint = 3; // This will close the <tr> tag after 3 outputs of the <td></td> tags
$data = "Data"; // Placeholder of the data
echo "<tr>";
for($i = 1; $i <= 10; $i++)
{
echo "<td>{$data}</td>";
if ($i % 3 == 0)
echo "</tr><tr>"; // Close and reopen the <tr> tag
}
echo "</tr>";
?>