我需要从类别表中填充无序列表。
类: 0 - >代表父类别。
id name parent 1 n1 0 2 n2 1 3 n3 2 4 n4 3 5 n5 1 6 n6 0 ........
我尝试使用以下内容:
$ menu_array是包含categories表作为关联数组的数组。
while ( $row = mysql_fetch_assoc($query) ) {
$menu_array[$row['id']] = array('name' => $row['name'],'parent' => $row['parent']);
}
function generate_menu($parent)
{
//this prevents printing 'ul' if we don't have subcategories for this category
$has_childs = false;
//use global array variable instead of a local variable to lower stack memory requierment
global $menu_array;
foreach($menu_array as $key => $value)
{
if ($value['parent'] == $parent)
{
//if this is the first child print '<ul>'
if ($has_childs === false)
{
//don't print '<ul>' multiple times
$has_childs = true;
echo '<ul>';
}
echo '< li>< a href="/category/' . $value['name'] . '/">' . $value['name'] . '< /a>';
generate_menu($key);
//call function again to generate nested list for subcategories belonging to this category
echo '< /li>';
}
}
if ($has_childs === true) echo '< /ul>';
}
在服务器上运行上面的代码时,我得到html输出(查看源代码):
&LT; UL&GT;
&LT;立GT;
&LT; a href =“#”&gt;网站模板&lt; / A&GT;
&LT; UL&GT;
&LT;立GT;&LT; a href =“#”&gt;广告素材&lt; / A&GT;
&LT; UL&GT;
&LT;立GT;&LT; a href =“#”&gt;投资组合&lt; / A&GT;&LT; /立GT;
&LT;立GT;&LT; a href =“#”&gt;摄影&lt; / A&GT;&LT; /立GT;
&LT;立GT;&LT; a href =“#”&gt; Art&lt; /立GT;
&LT; / UL&GT;
&LT; /立GT;
.....
I want to get like:
< ul id="jsddm">
< li>< a href="#">Parent Category 1< /a>
< ul>
< li><a href="#">Sub Category 1 - 1< /a>< /li>
< li><a href="#">Sub Category 2 - 1< /a>< /li>
< li><a href="#">Sub Category 3 - 1< /a>< /li>
< /ul>
</ li>
< li><a href="#">Parent Category 2< /a>< /li>
< /ul>
任何帮助将不胜感激。