數據庫設計如下:pid代表父id,默認爲0(頂級分類)
引用的方法如下:(遞歸的方法會降低性能)
function generateTree($data){
$items=array();
foreach($data as $v){//將數組存入$items,且$items的鍵爲$data中的id
$items[$v['id']] = $v;
}
$tree=array();
foreach($items as $item){
if(isset($items[$item['pid']])){//通過pid判斷$items中是否有對應的數組,$itms[0]不存在
$items[$item['pid']]['sub'][]=&$items[$item['id']];
}
else{
$tree[]=&$items[$item['id']];
}
}
return $tree;
}
再轉爲json格式。
前端js遞歸遍歷出所有的結果:
var str = "";
var forData = function(childData,str){
str += "├   ";
for(var i=0;i<childData.length;i++){
this.template=_.template($("#class-tpl").html());
this.tblTemp=_.template($("#list-tpl").html());
var obj = childData[i];
if(obj.sub){//若存在子類,則遞歸遍歷
obj.name=str+obj.name;
$("#tbd_class_basic").append(this.tblTemp(obj));
forData(obj.sub,str);
}else{
obj.name=str+obj.name;
$("#tbd_class_basic").append(this.tblTemp(obj));
}
}
}
forData(response,str);