如何生成foreach网格表

时间:2015-09-30 16:27:19

标签: php html foreach html-table

我有这个代码,我试图在网格表中。到目前为止,我在一列中生成结果。我怎样才能使第一列达到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>

1 个答案:

答案 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 │   │   ║
╚════╧═══╧═══╝