[英]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.