2012-12-08 43 views
0

是否有修改此PHP代碼如何在三個較短的列中顯示長列表?

foreach ($categories as $category)  
    { 
     print("<tr>");    
     print("<td><a href=\"category.php?category=" . $category["id"] . "\">{$category["category"]}</a></td>");    
     print("</tr>");  
    } 

顯示在三個較短列,而不只是一個很長的一個內容的方式嗎?喜歡這裏http://www.registrar.fas.harvard.edu/courses-exams/courses-instruction

顯示順序必須是這樣

1 4 7 
2 5 8 
3 6 9 
+0

你想保持它作爲3列的表格,或者您也可以更改HTML標籤,並添加一些CSS? –

+0

我會傾向於使用array_chunk並使用3 uls。 – Popnoodles

回答

1

你將要在每一行代碼中使用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>"); 
+0

有沒有辦法修改它,以便條目按列而不是按行按字母順序排序? –

+0

我已將所需的顯示順序添加到我的原始問題中。 –

+0

這會有點棘手..可能是一個問題本身。或者一個有趣的學習算法,試圖通過你自己:) –

0
$i=1; 
foreach ($categories as $category)  
{ 
    if($i==1) { 
     print("<tr>"); 
    }    
    print("<td><a href=\"category.php?category=" . $category["id"] . "\">{$category["category"]}</a></td>"); 
    if($i==3) {  
     print("</tr>"); 
     $i=1; 
    } 
    $i++; 
} 
0

這將列出,如:

// 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

我會去與此,與警告,類別鍵可能不是整數,可能不是基於0,線性或連續。 – Crisp

+0

將會丟失標記和最後的一些單元,具體取決於$類別中元素的數量 –

+0

有沒有辦法對其進行修改,以便在列中而不是在行中按字母順序對條目進行排序? –

0

假設$類別是一個數組。

$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] : '&nbsp;'; 
     echo "<td>{$value} {$p}</td>\n"; 
    } 
    echo "</tr>\n"; 
} 
echo "</table>"; 

訂單將被

1 4 7 
2 5 8 
3 6 9 
相關問題