ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
~~~ <?php // 假设有一个数组值; $menu=array( array( "title"=>"首页", //一级栏目 "pid"=>0, // 父亲节点 "id"=>1, ), array( "title"=>"公司简介", // 一级栏目 "pid"=>0, // 父亲节点 "id"=>2, ), array( "title"=>"产品中心", //多级 "pid"=>0, // 父亲节点 "id"=>3, ), array( "title"=>"联系我们", //一级栏目 "pid"=>0, // 父亲节点 "id"=>4, ), array( "title"=>"产品分类1", //一级栏目 "pid"=>3, // 父亲节点 "id"=>5, ), array( "title"=>"产品分类2", //一级栏目 "pid"=>1, // 父亲节点 "id"=>6, ), array( "title"=>"产品分类3", //一级栏目 "pid"=>6, // 父亲节点 "id"=>7, ), array( "title"=>"changliang", //一级栏目 "pid"=>0, // 父亲节点 "id"=>8, ), ); function tree($list,$pk="id",$pid="pid",$child="_child",$root=0) { $tree=array(); $Temparr=array(); //定义临时数组 // 1、建立以id为键值的数组; foreach ($list as $row) { $Temparr[$row[$pk]]=$row; } foreach ($Temparr as $key1 => $row1) { // 将一级栏目加入tree if ($row1[$pid]==$root) { $tree[]=& $Temparr[$key1]; //tree 跟temparr将引用同一个地址 } else{ // 为当前值的父类增加多维数组 $Temparr[$row1[$pid]]["_child"][]=& $Temparr[$key1]; } } return $tree; } ~~~ 最简单字段: id,pid,title. 设计思路: 1.定义树,定义临时数组。 2.以id为key,创建临时数组。 3.循环临时数组 4.判断是否为以为一级栏目,将一级栏目加入菜单。 5.如果非一级栏目,将他以多维数组的形式加到父类。 核心思路::多维数组,引用