如何使用PHP在三列中显示列表?

Har*_*y M 6 html php html-table

在过去的几个小时里,我一直试图弄清楚PHP代码在三列中显示一个列表,以便它有这个订单

A D G
B E H
C F I
Run Code Online (Sandbox Code Playgroud)

但我真的迷路了.谁能帮我这个?我目前只有按此顺序列出的代码

A B C
D E F
G H I
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码:

echo '<table><tr>';
foreach ($categories as $k => $category) {
    if ($k % 3 == 0 && $k ! = 0) {
        echo '</tr><tr>';
    }
    echo '<td><a href="category.php?category='.$category["id"].'">'.$category["category"].'</a></td>';
}
echo '</table>';
Run Code Online (Sandbox Code Playgroud)

小智 5

尝试这个:

$columns = 3;
$rows = ceil(count($categories) / $columns);

echo '<table>';

for ($row = 0; $row < $rows; $row++) {
    echo '<tr>';

    foreach ($categories as $k => $category) {
        if ($k % $rows == $row) {
            echo '<td><a href="category.php?category='.$category["id"].'">'.$category["category"].'</a></td>';
        }
    }

    echo '</tr>';
}

echo '</table>';
Run Code Online (Sandbox Code Playgroud)

它的效率不是很高,但是现在我无法想到一种更好的方法。


Juk*_*ela 5

如果你想拥有列表呈现在列所示,你可以在逻辑顺序生成它,只是使用CSS columns属性设置在列:

ul {
  -moz-column-count: 2;
  -webkit-column-count: 2;
  column-count: 2;
}
Run Code Online (Sandbox Code Playgroud)

坏消息是IE 9和更早的版本不支持此功能,但是诸如css3-multi-column.js之类的Columns polyfills在简单情况下(尽管有局限性和问题)可能会运行良好。