~~~
<?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.如果非一级栏目,将他以多维数组的形式加到父类。
核心思路::多维数组,引用