建立递归导航菜单php [英] build recursive navigation menu php
问题描述
要构建动态导航菜单,请运行查询
To build dynamic navigation menu, I've run the query
select `category_id`,`category_name`,`parent_category_id`,`sort_order` from `item_category`
我得到结果
Array
(
[0] => Array
(
[category_id] => 9
[category_name] => cat1
[parent_category_id] => 0
[sort_order] => 0
)
[1] => Array
(
[category_id] => 11
[category_name] => cat3
[parent_category_id] => 0
[sort_order] => 0
)
[2] => Array
(
[category_id] => 15
[category_name] => cat7
[parent_category_id] => 10
[sort_order] => 0
)
[3] => Array
(
[category_id] => 17
[category_name] => cat9
[parent_category_id] => 10
[sort_order] => 1
)
[4] => Array
(
[category_id] => 13
[category_name] => cat5
[parent_category_id] => 11
[sort_order] => 0
)
[5] => Array
(
[category_id] => 16
[category_name] => cat8
[parent_category_id] => 15
[sort_order] => 0
)
[6] => Array
(
[category_id] => 10
[category_name] => cat2
[parent_category_id] => 9
[sort_order] => 1
)
[7] => Array
(
[category_id] => 12
[category_name] => test5
[parent_category_id] => 9
[sort_order] => 0
)
)
我试图用它来构建导航栏
I tried to build navigation bar out of it by
function create_array($number, $data)
{
$result = array();
foreach ($data as $row)
{
if ($row['parent_category_id'] == $number)
{
$result[$row['category_id']] = create_array($row['category_id'], $data);
}
}
return $result;
}
$menu_array=create_array(0, $all_categories);
echo "menu_array<pre>"; print_r($menu_array); echo "</pre>";
它具有像这样的完美构建菜单
It has perfectly build menu like this
Array
(
[9] => Array
(
[10] => Array
(
[15] => Array
(
[16] => Array
(
)
)
[17] => Array
(
)
)
[12] => Array
(
)
)
[11] => Array
(
[13] => Array
(
)
)
)
我现在的问题是我不了解如何使用如何通过sort_order
在create_array
函数中进行排序,还无法获取create_array
函数递归来获取category_name
.
My problem now is I don't understand how to do the sorting in how to retrieve create_array
function using sort_order
and also retrievecategory_name
from through create_array
function recursion.
谢谢@ user3091574,我之前出于其他原因对parent_category_id
进行了排序,现在为了简化您的建议,现在我想检索category_name
并从中构建<ul>
!有什么建议?
Thanks @user3091574 I was sorting by parent_category_id
earlier for some other reason, for now to make it simple taking your suggestion, now i want to retrieve category_name
and build <ul>
out of it! any suggestions?
EDIT-2 我在 https://stackoverflow.com/a/3380296/1528701
推荐答案
进行排序:
在查询中按sort_order DESC
添加订单
用于添加分类法
function create_array($number, $data)
{
$result = array();
foreach ($data as $row)
{
if ($row['parent_category_id'] == $number)
{
$result[$row['category_id']]['category_name']=$row['category_name'];
$result[$row['category_id']]['id']= create_array($row['category_id'], $data);
}
}
return $result;
}
这篇关于建立递归导航菜单php的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!