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

php無限極分類

發布時間: 2023-08-20 20:55:31

① 什麼是 無限極分類(php資料庫)

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

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

② 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);

③ 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遞歸無限極分類怎麼弄

給個函數你,調用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無限極分類查找父級生成樹形結構子級在最頂層,怎麼辦

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

熱點內容
Android三國殺 發布:2025-02-05 09:05:55 瀏覽:243
gms源碼 發布:2025-02-05 08:55:01 瀏覽:780
搭建的伺服器怎麼連接不了 發布:2025-02-05 08:49:05 瀏覽:656
wordbox安卓怎麼玩 發布:2025-02-05 08:36:12 瀏覽:531
車內安卓大屏怎麼聯網 發布:2025-02-05 08:33:47 瀏覽:342
安卓手機中的投影在哪裡 發布:2025-02-05 08:01:57 瀏覽:595
php調用定義函數 發布:2025-02-05 08:00:30 瀏覽:452
ubuntujava環境變數 發布:2025-02-05 07:57:13 瀏覽:443
sql語句on 發布:2025-02-05 07:41:42 瀏覽:598
取消電腦密碼怎麼設置8 發布:2025-02-05 07:24:16 瀏覽:394