例子:
$data_0=[];$data_1=[];$data_2=[];$data_3=[];
$data_1_t=[];$data_2_t=[];$data_3_t=[];
$res = Db::name('menu')
->field('id as value,title as name,pid,controller,position,hide_banner,model,url,img')
->where('deleted',0)
->where('hide',0)
->whereNull('pid')
->order('sort desc,id desc')
->select();
if(!empty($res)){
$count = count($res);
foreach($res as $k => $rs){
$rs['children']=getMenuData($rs['value'],'menu',1);
$res[$k]= $rs;
//生成前端各栏目的分类
//一级
$menu_list_1 = Db::name('menu')
->field('id,title')
->where('pid',$rs['value'])
->where('deleted',0)
->where('level',1)
->order('sort desc,id desc')
->select();
if(!empty($menu_list_1)){
$data_1[$rs['value']]=array_column($menu_list_1,null,'id');
$data_1_t = array_merge($data_1_t,array_column($menu_list_1,'title','id'));
// $data_1_t = $data_1_t + array_column($menu_list_1,'title','id');
foreach($menu_list_1 as $v1){
//2级
$menu_list_2 = Db::name('menu')
->field('id,title')
->where('pid',$v1['id'])
->where('deleted',0)
->where('level',2)
->order('sort desc,id desc')
->select();
if(!empty($menu_list_2)){
$data_2[$v1['id']]=array_column($menu_list_2,null,'id');
//$data_2_t = array_merge($data_2_t,array_column($menu_list_2,null,'id'));
$data_2_t = $data_2_t + array_column($menu_list_2,'title','id');
foreach($menu_list_2 as $v2){
//3级
$menu_list_3 = Db::name('menu')
->field('id,title')
->where('pid',$v2['id'])
->where('deleted',0)
->where('level',3)
->order('sort desc,id desc')
->select();
if(!empty($menu_list_3)){
$data_3[$v2['id']]=array_column($menu_list_3,null,'id');
//$data_3_t = array_merge($data_3_t,array_column($menu_list_3,null,'id'));
$data_3_t = $data_3_t + array_column($menu_list_3,'title','id');
foreach($menu_list_3 as $v3){
//4级
$menu_list_4 = Db::name('menu')
->field('id,title')
->where('pid',$v3['id'])
->where('deleted',0)
->where('level',4)
->order('sort desc,id desc')
->select();
if(!empty($menu_list_4)){
$data_4[$v3['id']]=array_column($menu_list_4,null,'id');
}
}
}
}
}
}
}
}
//0 顶级
$data_0 = array_column($res, 'name','value');
}
结果:
{
"code": 200,
"msg": "成功",
"count": 12,
"data": {
"data_0": {
"1": "首页",
"3": "直播课程",
"4": "录播课程",
"5": "在线题库",
"6": "团队",
"7": "资讯",
"8": "商城",
"9": "论坛",
"11": "新手指南",
"12": "帮助中心",
"14": "关于我们1",
"18": "在线招聘"
},
"data_1": {
"3": {
"25": {
"id": 25,
"title": "自考"
},
"26": {
"id": 26,
"title": "教师"
}
},
"4": {
"33": {
"id": 33,
"title": "教师1"
},
"34": {
"id": 34,
"title": "自考1"
}
},
"5": {
"39": {
"id": 39,
"title": "自考"
},
"40": {
"id": 40,
"title": "人力"
},
"41": {
"id": 41,
"title": "教师"
}
},
"6": {
"51": {
"id": 51,
"title": "会计"
},
"52": {
"id": 52,
"title": "教师"
},
"53": {
"id": 53,
"title": "人力"
}
},
"7": {
"57": {
"id": 57,
"title": "公司新闻"
},
"58": {
"id": 58,
"title": "行业新闻"
},
"59": {
"id": 59,
"title": "公告"
}
},
"8": {
"60": {
"id": 60,
"title": "计算机"
},
"61": {
"id": 61,
"title": "自考"
}
},
"11": {
"65": {
"id": 65,
"title": "请修改标题"
},
"66": {
"id": 66,
"title": "请修改标题"
},
"67": {
"id": 67,
"title": "意见反馈"
},
"68": {
"id": 68,
"title": "VIP购买"
},
"69": {
"id": 69,
"title": "疑难问答"
},
"70": {
"id": 70,
"title": "交流社区"
}
},
"12": {
"71": {
"id": 71,
"title": "请修改标题"
},
"72": {
"id": 72,
"title": "发布须知"
},
"73": {
"id": 73,
"title": "新手入门"
},
"74": {
"id": 74,
"title": "注册账号"
},
"75": {
"id": 75,
"title": "如何支付"
}
},
"14": {
"79": {
"id": 79,
"title": "联系方式"
},
"80": {
"id": 80,
"title": "关于我们"
}
},
"18": {
"76": {
"id": 76,
"title": "文职类招聘"
},
"77": {
"id": 77,
"title": "市场部招聘"
},
"78": {
"id": 78,
"title": "技术部招聘"
}
}
},
"data_1_t": [
"教师",
"自考",
"自考1",
"教师1",
"教师",
"人力",
"自考",
"人力",
"教师",
"会计",
"公告",
"行业新闻",
"公司新闻",
"自考",
"计算机",
"交流社区",
"疑难问答",
"VIP购买",
"意见反馈",
"请修改标题",
"请修改标题",
"如何支付",
"注册账号",
"新手入门",
"发布须知",
"请修改标题",
"技术部招聘",
"市场部招聘",
"文职类招聘",
"关于我们",
"联系方式"
],
"data_2": {
"25": {
"29": {
"id": 29,
"title": "本科"
},
"30": {
"id": 30,
"title": "专科"
}
},
"26": {
"27": {
"id": 27,
"title": "小学"
},
"28": {
"id": 28,
"title": "中学"
}
},
"33": {
"37": {
"id": 37,
"title": "中学2"
},
"38": {
"id": 38,
"title": "小学2"
}
},
"34": {
"35": {
"id": 35,
"title": "研究生"
},
"36": {
"id": 36,
"title": "博士"
}
},
"39": {
"47": {
"id": 47,
"title": "行管专科"
},
"48": {
"id": 48,
"title": "行管本科"
}
},
"40": {
"45": {
"id": 45,
"title": "小学1"
},
"46": {
"id": 46,
"title": "中学1"
}
},
"41": {
"42": {
"id": 42,
"title": "高中"
},
"43": {
"id": 43,
"title": "中学"
},
"44": {
"id": 44,
"title": "小学"
}
},
"51": {
"56": {
"id": 56,
"title": "大专"
}
},
"52": {
"55": {
"id": 55,
"title": "大专"
}
},
"53": {
"54": {
"id": 54,
"title": "大专"
}
},
"60": {
"63": {
"id": 63,
"title": "PHP教程"
},
"64": {
"id": 64,
"title": "JS教程"
}
},
"61": {
"62": {
"id": 62,
"title": "专科升本科密级"
}
}
},
"data_2_t": {
"27": "小学",
"28": "中学",
"29": "本科",
"30": "专科",
"35": "研究生",
"36": "博士",
"37": "中学2",
"38": "小学2",
"42": "高中",
"43": "中学",
"44": "小学",
"45": "小学1",
"46": "中学1",
"47": "行管专科",
"48": "行管本科",
"54": "大专",
"55": "大专",
"56": "大专",
"62": "专科升本科密级",
"63": "PHP教程",
"64": "JS教程"
},
"data_3": {
"28": {
"32": {
"id": 32,
"title": "请修改标题"
}
},
"30": {
"31": {
"id": 31,
"title": "请修改标题"
}
},
"44": {
"49": {
"id": 49,
"title": "综合素质"
},
"50": {
"id": 50,
"title": "教育知识与能力"
}
}
},
"data_3_t": {
"31": "请修改标题",
"32": "请修改标题",
"49": "综合素质",
"50": "教育知识与能力"
},
"data_4": null,
"data_4_t": null
}
}
array_merge函数,当ID=数字时,会整合去掉