[英]build recursive navigation menu php
要構建動態導航菜單,我運行了查詢
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
)
)
我試圖通過它來構建導航欄
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>";
它具有這樣的完美構建菜單
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
。
編輯:謝謝@ user3091574我由於其他一些原因在較早的時候按parent_category_id
進行了排序,現在為了簡化您的建議,現在我想檢索category_name
並從中構建<ul>
! 有什么建議么?
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.