當前位置:首頁 » 編程語言 » php無限極分類樹

php無限極分類樹

發布時間: 2022-09-26 21:45:23

php+smarty模板如何實現無限級菜單樹顯示

無限極菜單分類,在模版裡面寫foreach顯然是不可取的,採取的策略是在函數文件寫一個無限獲取菜單的函數,並在模版中引入該函數,函數可採用遞歸調用的方式獲取每一級的菜單並輸出在模版中

Ⅱ php遞歸無限極分類怎麼弄

給個函數你,調用get_category()就是一個數組格式的結果
function get_category($parent_id=0){
$arr=array();
$sql = "select * from category where parent_id=$parent_id";//查詢子級數據
$result = array(a_object,b_object,,,)=sql_query($sql);//查詢結果一個數組或列表格式,自己完善。
if($result){
foreach($result as $re){//循環數組
if(get_category($re.id))//如果子級不為空
$re['child'] = get_category($re.id);
$arr[] = $re;
}
return $arr;
}

Ⅲ php無限極分類實現的方法

初始化的數據

//初始化原始數據(id=>編號,name=>顯示名稱,pid=>父級目錄id,sort=>排序順序)$data[1]=array('id'=>'1','name'=>'一級目錄A','pid'=>'0','sort'=>'1');
$data[2]=array('id'=>'2','name'=>'一級目錄B','pid'=>'0','sort'=>'2');
$data[3]=array('id'=>'3','name'=>'一級目錄C','pid'=>'0','sort'=>'3');
$data[4]=array('id'=>'4','name'=>'一級目錄D','pid'=>'0','sort'=>'4');
$data[5]=array('id'=>'5','name'=>'二級目錄A-1','pid'=>'1','sort'=>'1');
$data[6]=array('id'=>'6','name'=>'二級目錄A-2','pid'=>'1','sort'=>'2');
$data[7]=array('id'=>'7','name'=>'二級目錄A-3','pid'=>'1','sort'=>'3');
$data[8]=array('id'=>'8','name'=>'二級目錄B-1','pid'=>'2','sort'=>'1');
$data[9]=array('id'=>'9','name'=>'二級目錄B-2','pid'=>'2','sort'=>'2');
$data[10]=array('id'=>'10','name'=>'二級目錄B-3','pid'=>'2','sort'=>'3');
$data[11]=array('id'=>'11','name'=>'二級目錄C-1','pid'=>'3','sort'=>'2');
$data[12]=array('id'=>'12','name'=>'二級目錄D-1','pid'=>'4','sort'=>'1');
$data[13]=array('id'=>'13','name'=>'二級目錄D-2','pid'=>'4','sort'=>'2');
$data[14]=array('id'=>'14','name'=>'三級目錄A-2-1','pid'=>'6','sort'=>'1');
$data[15]=array('id'=>'15','name'=>'三級目錄A-2-2','pid'=>'6','sort'=>'2');
$data[16]=array('id'=>'16','name'=>'三級目錄C-1-1','pid'=>'11','sort'=>'1');
$data[17]=array('id'=>'17','name'=>'三級目錄B-2-1','pid'=>'9','sort'=>'2');

顯示樹結構

functionprintTree($data,$level=0){foreach($dataas$key=>$value){for($i=0;$i<=$level;$i++){echo'&emsp;&emsp;';
}echo$value['name'];echo'<br>';if(!empty($value['children'])){
printTree($value['children'],$level+1);
}
}
}

使用遞歸的方式獲取無限極分類數組

functiongetNodeTree(&$list,&$tree,$pid=0){foreach($listas$key=>$value){if($pid==$value['pid']){
$tree[$value['id']]=$value;unset($list[$key]);
getNodeTree($list,$tree[$value['id']]['children'],$value['id']);
}
}
}

使用引用-無限極分類

functioncreateNodeTree(&$list,&$tree){foreach($listas$key=>$node){if(isset($list[$node['pid']])){
$list[$node['pid']]['children'][]=&$list[$key];
}else{
$tree[]=&$list[$node['id']];
}
}
}

調用

//遞歸-無限極分類調用getNodeTree($data,$tree);
printTree($tree);//使用引用-無限極分類調用createNodeTree($data,$tree);
printTree($tree);

Ⅳ php無限極分類查找父級生成樹形結構子級在最頂層,怎麼辦

一般這種問題需要使用嵌套函數,PHP也是支持嵌套函數的,就是不停的調用自身,直到符合條件後退出函數循環,這樣就能找出它所有的父級了,在c語言的時候也學過,理解起來還是比較容易的。

Ⅳ php 幾種常用的遞歸 無限極分類

/**
*遞歸實現無限極分類
*@param$array分類數據
*@param$pid父ID
*@param$level分類級別
*@return$list分好類的數組直接遍歷即可$level可以用來遍歷縮進
*/

functiongetTree($array,$pid=0,$level=0){

//聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋
static$list=[];foreach($arrayas$key=>$value){//第一次遍歷,找到父節點為根節點的節點也就是pid=0的節點
if($value['pid']==$pid){//父節點為根節點的節點,級別為0,也就是第一級
$value['level']=$level;//把數組放到list中
$list[]=$value;//把這個節點從數組中移除,減少後續遞歸消耗
unset($array[$key]);//開始遞歸,查找父ID為該節點ID的節點,級別則為原級別+1
getTree($array,$value['id'],$level+1);

}
}

Ⅵ 關於PHP無限極分類

functiongenTree5($items){
foreach($itemsas$item)
$items[$item['pid']]['son'][$item['id']]=&$items[$item['id']];
returnisset($items[0]['son'])?$items[0]['son']:array();
}

超級爽的函數,格式可能不一樣,但肯定有用,樹狀結構的輸出

Ⅶ 什麼是 無限極分類(PHP。資料庫)

那是一種關聯關系....sql 里可以叫"自連接" 假設:表 Category 有以下欄位: Id(PK),Cate_Name(varchar),Cate_Parent_Id(int) 數據: Id(編號ID) Cate_Name(類別名稱) Cate_Parent_Id(父級Id) 1 BaseCategory 0 2 News 1 3 Article 1 4 Story 3 說明: Id 為 1 的基類別(沒有父級類別) News,Article 為 基類別下的子分類 Story 為 Article 下的子分類 層次關系: 0 - 2 - 3 - 4 這樣就可以簡單實現無限分類的資料庫的設計了 使用: 給出Id 獲取到它的父類別和所有子類別 Function getParentCategory($Id){ $sql = "select * from Category where Id = (select Cate_Parent_Id from Category where Id = $Id)"; $rs = mysql_query($sql,$conn); ...... //省事期間,給出偽代碼吧 if(記錄不存在 或者 $Id = 1){ return false; //無父級或不存在 }else{ return 查詢出的父級數據數組; } } Function getChildCategory($PId){ $sql = "select * from Category where Cate_Parent_Id = $PId"; 存在則返回數據數組 否則返回false } 上面只是簡單說明下大致思路.. php,J2ee的我沒手寫過,都是通過支持ORM的MVC框架去配置出來的. asp的倒是寫過,需要的話,可以發你 只要邏輯關系整清楚了,就不難了...至於頁面展示,可以用JS或者AJAX

Ⅷ thinkPHP3.2.3中實現無限極分類用Tree類

$tree = new \Think\Tree($arr);
$str = "<option value=\$id \$selected>\$spacer\$name</option>"; //生成的形式
$tree->get_tree(0,$str, $select_id = 0);

Ⅸ 什麼是 無限極分類(PHP。資料庫)

字面理解無限分類:
一級分類 -> 二級分類 -> 三級分類...........
1級下面有多個2級.
2級下面有多個3級.
........

資料庫的設計:
表名:table_categories
欄位:
cid [主鍵]
name 分類名
parentid:上一級cid.如果是一級分類.該欄位數據等於0;

熱點內容
無線列印伺服器搭建 發布:2024-12-27 13:50:50 瀏覽:287
arm的存儲器 發布:2024-12-27 13:47:24 瀏覽:979
vivox20忘記密碼怎麼解鎖 發布:2024-12-27 13:46:00 瀏覽:814
sqlserver默認排序 發布:2024-12-27 13:45:50 瀏覽:974
安卓東西怎麼往蘋果上傳 發布:2024-12-27 13:27:36 瀏覽:129
圖片壓縮的app 發布:2024-12-27 13:25:35 瀏覽:106
設置對象存儲 發布:2024-12-27 13:25:24 瀏覽:707
現在玩lol要什麼配置 發布:2024-12-27 13:17:30 瀏覽:224
vs2012添加文件夾 發布:2024-12-27 13:01:27 瀏覽:899
c語言統計單詞數 發布:2024-12-27 12:58:09 瀏覽:57