[英]li tree menu from array
I have array: 我有数组:
parent 1 is first step! 父母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
)
)
In result I need tree structure with ul and li elements: 结果,我需要带有ul和li元素的树结构:
<ul>
<li>111</li>
<li>222
<ul>
<li>333
<ul>
<li>444</li>
</ul>
</li>
</ul>
</li>
</ul>
Thanks! 谢谢!
This array looks a lot like you got it from a database. 这个数组看起来很像是从数据库中获得的。 If that's the case, please just use an MVC framework. 如果是这种情况,请使用MVC框架。 It will make your life so much easier. 这将使您的生活变得更加轻松。
<?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.