我有这个代码,我试图在网格表中。到目前为止,我在一列中生成结果。我怎样才能使第一列达到10行时创建一个新列?
<table>
<thead>
<tr>
<th>Players</th>
</tr>
</thead>
<tbody>
<?php if( ( $Players = $Query->GetPlayers( ) ) !== false ): ?>
<?php foreach( $Players as $Player ): ?>
<tr>
<td align=center><?php echo "<img src=https://crafatar.com/avatars/".$Player."/?helm&size=32>
<p align=center>".$Player."</p>"; ?></td>
</tr>
<?php endforeach; ?>
<?php else: ?>
<tr>
<td>No players Online.</td>
</tr>
<?php endif; ?>
</tbody>
</table>
答案 0 :(得分:0)
在您提到的情况下,您需要在打印表格之前收集所有数据,构建数组并进行一些数学运算。这是由于Table及其子项的建模方式。我建议首先切换到列,然后尽可能切换行 - 就像在评论中提到的那样。
在推荐的情况下,它将如下:
$i = 1;
// start first row
echo "<tr>";
foreach($Players as $Player){
echo "<td>" . $Player . "</td>";
// do we need a new row?
if($i % MAX_COLUMN_NUMBER === 0){
echo "</tr><tr>";
}
// increase counter
$i++;
}
// end final row
echo "</tr>";
如果您将MAX_COLUMN_NUMBER
替换为3并且$Players
变量中包含10个项目,则它将如下所示:
╔════╤═══╤═══╗
║ 1 │ 2 │ 3 ║
╠════╪═══╪═══╣
║ 4 │ 5 │ 6 ║
╟────┼───┼───╢
║ 7 │ 8 │ 9 ║
╟────┼───┼───╢
║ 10 │ │ ║
╚════╧═══╧═══╝