~~~
<?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.如果非一級欄目,將他以多維數組的形式加到父類。
核心思路::多維數組,引用