簡體   English   中英

如何在PHP中將列表制作成樹狀結構

[英]How to make a list into a tree structure in PHP

從以下 php 腳本:

while($row = mysqli_fetch_array($res, MYSQLI_ASSOC))
{
    $category = $row["category"];
    $thing = $row["thing"];
    echo $category." ".$thing;
    echo "<br>";
} 

我回應以下幾行:

Book book1
Book book2
Chair chair1
Chair chair2
Table table1

但我想顯示為以下結果:

Book 
    book1
    book2

Chair
    chair1
    chair2

Table
    table1

我知道我必須在這里的某個地方做一個簡單的循環,但我沒有得到我想要的結果。

任何幫助,將不勝感激。 謝謝。

獎勵:我計划讓所有這些詞都可以點擊,以便將它們放入一個變量中。 如果您可以將此提示插入到您的答案中,那就太好了。

編輯 :

這是我到目前為止所嘗試的(嘗試添加一個圖標):

while($row = mysqli_fetch_array($res, MYSQLI_ASSOC))
{   
    foreach($row as $item) 
    {
        echo "<div style='padding-right: 5px' class='glyphicon glyphicon-book'></div>";
        echo $item;
        echo "<div style='padding-left: 20px'>";
        echo "</div>";
        echo "<br>";
    }   
}  
$table = array();

while($row = mysqli_fetch_array($res, MYSQLI_ASSOC))
{   
    if ( !isset( $table[ $row["category"] ] ) ) {
    
        // No category exists, create now
        $table[ $row["category"] ] = array();
    }
    
    // append to category
    $table[ $row["category"] ][] = $row["thing"];
} 
    
// some additional sorting here 
/* todo */

print_r($table);
    

此解決方案通過“字符串”(在幕后將其散列到“存儲桶”中)搭載 PHP 固有的命名鍵。由於您的數據僅顯示嵌套一層的數據結構,因此它不是遞歸解決方案。但即使如此,您的基本要求是類別,因此即使您有嵌套數據結構也能工作。

isset將檢查類別是否存在。 如果不是,則創建一個新的子數組來保存這些值。

[]語法是附加到數組的 PHP 風格。

感謝@GetSet 的回答,我可以創建獲得以下結果所需的正確多維數組:

Array ( [Book] => Array ( [0] => book1 [1] => book2 ) [Chair] => Array ( [0] => chair1 [1] => chair2 ) [Table] => Array ( [0] => table1 ) )

然后我想在這樣的 html 頁面上顯示:

Book 
    book1
    book2

Chair
    chair1
    chair2

Table
    table1

在閱讀了有關 PHP 數組的更多信息后,我提出了這個似乎對我有用的解決方案(帶有圖標):

foreach ($table as $key => $value) 
{
    echo "<div style='padding-right: 5px; font-size:13px;' class='glyphicon glyphicon-book'></div>";
    echo $key;
    echo "<div style='height: 2px'></div>";
    foreach ($value as $v2) 
    {
        echo "<div style='padding-right: 7px;padding-left: 15px; font-size:11px;' class='fa fa-file-text-o'></div>";
        echo $v2;
        echo "<div style='height: 5px'></div>";
    }
    echo "<div style='height: 10px'></div>";
}

結果如下:

在此處輸入圖片說明

我知道必須努力使這些詞可點擊。 此外,我希望能夠通過單擊書籍圖標來減少一個類別,但我想我必須為此使用 JavaScript,而且我真的不了解這種語言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM