2014-08-30 43 views
0

有在數據庫中的個人和位置存儲,像這樣:從拉平數據PHP畫「UL禮」樹最簡單的方法

$rows = array(
    array(
     'name' => "John Smith", 
     'level'=> 1, 
     'order'=> 1 
    ), 
    array(
     'name' => "Matt Simons", 
     'level'=> 2, 
     'order'=> 1 
    ), 
    array(
     'name' => "Someone Else", 
     'level'=> 2, 
     'order'=> 2 
    ), 
); 

這應該引起:

<ul> 
    <li>John Smith</li> 
    <ul> 
     <li>Matt Simons</li> 
     <li>Someone Else</li> 
    </ul> 
</ul> 

什麼是在PHP中執行此操作的最簡單方法?

+1

最簡單的方法是爲它編寫一些代碼 – 2014-08-30 14:01:47

+0

你的位置沒有意義。你只能在1級上有1個值。 – 2014-08-30 14:03:28

+0

@newboyhun我在1級上看不到超過1個值 – 2014-08-30 14:05:10

回答

0

一個不錯的方法是使用DOMDocument動態創建HTML元素。

這是一個適用於您的特定情況的快速示例。但是您必須添加其他檢查以使其健壯。

$rows = array(
    array(
     'name' => "John Smith", 
     'level'=> 1, 
     'order'=> 1 
    ), 
    array(
     'name' => "Matt Simons", 
     'level'=> 2, 
     'order'=> 1 
    ), 
    array(
     'name' => "Someone Else", 
     'level'=> 2, 
     'order'=> 2 
    ), 
); 

$dom = new DOMDocument(); 
$ul = $dom->createElement('ul'); 
$dom->appendChild($ul); 
$lastLevel = 1; 
$lastLi = null; 

foreach ($rows as $row) { 
    $li = $dom->createElement('li', $row['name']); 
    if ($lastLevel != $row['level']) { 
     $lastLevel = $row['level']; 
     $ul = $dom->createElement('ul'); 
     $lastLi->appendChild($ul); 
    } 
    $ul->appendChild($li); 
    $lastLi = $li; 
} 

echo $dom->saveHTML(); 
相關問題