[英]li tree menu from array
我有數組:
父母1是第一步!
Array
(
[0] => Array
(
[categoryID] => 1
[parent] => 1
[name] => 111
)
[1] => Array
(
[categoryID] => 2
[parent] => 1
[name] => 2222
)
[2] => Array
(
[categoryID] => 3
[parent] => 2
[name] => 3333
)
[3] => Array
(
[categoryID] => 4
[parent] => 3
[name] => 444
)
)
結果,我需要帶有ul和li元素的樹結構:
<ul>
<li>111</li>
<li>222
<ul>
<li>333
<ul>
<li>444</li>
</ul>
</li>
</ul>
</li>
</ul>
謝謝!
這個數組看起來很像是從數據庫中獲得的。 如果是這種情況,請使用MVC框架。 這將使您的生活變得更加輕松。
<?php
$input_array = array(
array(
'categoryID' => 1,
'parent' => 1,
'name' => 111,
),
array(
'categoryID' => 2,
'parent' => 1,
'name' => 2222,
),
array(
'categoryID' => 3,
'parent' => 2,
'name' => 3333,
),
array(
'categoryID' => 4,
'parent' => 3,
'name' => 444,
)
);
function buildHtmlList($array)
{
$maxlevel = 0;
// just to be sure that the array keys are continuous
$array = array_values($array);
foreach ($array as $key => $value)
{
$previousparent = isset($array[$key - 1]['parent']) ? $array[$key - 1]['parent'] : null;
$nextparent = isset($array[$key + 1]['parent']) ? $array[$key + 1]['parent'] : null;
if ($value['parent'] != $previousparent)
{
echo "\n<ul>";
++$maxlevel;
}
echo "\n<li>" . $value['name'];
if ($nextparent == $value['parent'])
echo "</li>";
}
for ($i = 0; $i < $maxlevel; ++$i)
{
echo "\n</li>\n</ul>";
}
}
buildHtmlList($input_array);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.