Php 如何在三个较短的列中显示长列表?
有没有办法修改这个PHP代码Php 如何在三个较短的列中显示长列表?,php,html-table,Php,Html Table,有没有办法修改这个PHP代码 foreach ($categories as $category) { print("<tr>"); print("<td><a href=\"category.php?category=" . $category["id"] . "\">{$category["category"]}</a></td>");
foreach ($categories as $category)
{
print("<tr>");
print("<td><a href=\"category.php?category=" . $category["id"] . "\">{$category["category"]}</a></td>");
print("</tr>");
}
您希望在每行标记中使用3个单元格标记:
$cols = 3;
$col = 0;
foreach ($categories as $category)
{
if($col == 0)
print("<tr>");
if($col < $cols) {
print("<td><a href=\"category.php?category=" . $category["id"] . "\">{$category["category"]}</a></td>");
$col++;
} else {
print("</tr>");
$col = 0;
}
}
if($col != 0)
print("</tr>");
$cols=3;
$col=0;
foreach($categories作为$category)
{
如果($col==0)
打印(“”);
如果($col<$cols){
打印(“”);
$col++;
}否则{
打印(“”);
$col=0;
}
}
如果($col!=0)
打印(“”);
$i=1;
foreach($categories作为$category)
{
如果($i==1){
打印(“”);
}
打印(“”);
如果($i==3){
打印(“”);
$i=1;
}
$i++;
}
此列表如下所示:
// 0,1,2
// 3,4,5
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>';
/0,1,2
// 3,4,5
回声';
foreach($k=>$category的类别){
如果($k%3==0&$k!=0){
回声';
}
回声';
}
回声';
假设$categories是一个数组
$columns = 3;
$rows = ceil( sizeof( $categories ) / $columns );
echo "<table>\n";
for ( $row = 1; $row <= $rows; $row++ )
{
echo "<tr>\n";
for ($column = 1; $column <= $columns; $column++) {
$p = (($column - 1) * $rows) + $row - 1;
$value = sizeof($categories) > $p ? $categories[$p] : ' ';
echo "<td>{$value} {$p}</td>\n";
}
echo "</tr>\n";
}
echo "</table>";
您想将其保留为3列表,还是也可以更改HTML标记并添加一些CSS?我倾向于使用array_chunk和3 uls。我同意这一点,但需要注意的是,类别键可能不是整数,也可能不是基于0的,线性或连续。根据$categories中元素的数量,末尾将缺少标记和一些单元格。有没有办法修改此选项,以便条目按字母顺序在列中排序而不是按行排序?第二个显示三行非常长的行。我已在原始问题中添加了所需的显示顺序。是否有没有一种方法可以修改这一点,使条目按字母顺序按列排序而不是按行排序?我已经将所需的显示顺序添加到了我的原始问题中。这会有点棘手。。这本身可能是个问题。或者是一个有趣的学习算法,你可以自己尝试和使用:)
// 0,1,2
// 3,4,5
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>';
$columns = 3;
$rows = ceil( sizeof( $categories ) / $columns );
echo "<table>\n";
for ( $row = 1; $row <= $rows; $row++ )
{
echo "<tr>\n";
for ($column = 1; $column <= $columns; $column++) {
$p = (($column - 1) * $rows) + $row - 1;
$value = sizeof($categories) > $p ? $categories[$p] : ' ';
echo "<td>{$value} {$p}</td>\n";
}
echo "</tr>\n";
}
echo "</table>";
1 4 7
2 5 8
3 6 9