[英]How to create a menu tree using php?
我正在開發一個電子商務平台,管理員可以在其中管理菜單、類別和子類別。 現在,我想在大型菜單中顯示它。
Menu1
Category1.1
SubCategory1
SubCategory2
Category1.2
SubCategory
Menu2
Category2.1
SubCategory1
這是我想出的一個可能的結構。 我有 2 個數據庫表 - 菜單、類別。 在類別中,有一個名為sub_category
的列,我在其中使用,
分隔符存儲子類別值。
現在,在運行以下查詢后 -
$data = DB::select('SELECT m.id AS mId, m.name AS menu,
m.meta_keywords AS menu_keywords, m.meta_description AS menu_description,
c.id AS cId, c.name AS category, c.sub_category, c.meta_keywords AS
category_keywords, c.meta_description AS category_description
FROM `menu` AS m LEFT JOIN `category` AS c ON c.menuId = m.id
WHERE m.is_publish = 1 AND c.is_publish = 1');
現在,我想建立一棵樹,我可以得到這樣的結果 -
"id" => 1,
"name" => "Fashion"
"category" => [
1 => [
"cId" => 1,
"category" => "Men"
"sub_category" => "Shirt, T-shirt"
],
2 => [
"cId" => 2,
"category" => "Women"
"sub_category" => ""
],
]
請幫助我找出解決方案。 先感謝您。
根據您的數據庫結構和要求,您可以使用以下 function -
public function menuTree($data){
$menuId = $menu = $sub = $op = array();
foreach($data as $d){
if(in_array($d->mId, $menuId)){
$sub['cId'] = $d->cId;
$sub['category'] = $d->category;
$sub['sub_category'] = $d->sub_category;
$sub['category_keywords'] = $d->category_keywords;
$sub['category_description'] = $d->category_description;
$menu[$d->mId]['category'][] = $sub;
} else {
$menuId[] = $d->mId;
$op['id'] = $d->mId;
$op['menu'] = $d->menu;
$op['menu_keywords'] = $d->menu_keywords;
$op['menu_description'] = $d->menu_description;
$menu[$d->mId] = $op;
if($d->cId != NULL){
$sub['cId'] = $d->cId;
$sub['category'] = $d->category;
$sub['sub_category'] = $d->sub_category;
$sub['category_keywords'] = $d->category_keywords;
$sub['category_description'] = $d->category_description;
$menu[$d->mId]['category'][] = $sub;
}
}
}
return $menu;
}
我仍然相信會有更好的解決方案。 希望這對你有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.