本篇文章帶給大家的內容是關於php如何實現分類樹狀的效果? (附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
我們有時候需要將分類資料以樹狀效果呈現出來,能一眼就看出來層級的組織關係,實現如下:
注意:我所講的分類為無限極分類,如下的函數所涉及的表格字段名有三個 id pid name ,如果有定義名稱不同請查詢分類列表資料時對應給字段取別名對應上id pid name ,例如 你的pid 表字段名定義為parent_id 那麼查詢時給該欄位取別名為 "parent_id as pid ";
函數如下:
/** * $list 为查询 出来的二维数组 **/ function getTree($list,$pid=0,$itemprefix = '') { static $icon = array('│', '├', '└'); static $nbsp = " "; static $arr = array(); $number = 1; foreach($list as $row) { if($row['pid'] == $pid) { $brotherCount = 0; //判断当前有多少个兄弟分类 foreach($list as $r) { if($row['pid'] == $r['pid']) { $brotherCount++; } } if($brotherCount >0) { $j = $k = ''; if($number == $brotherCount) { $j .= $icon[2]; $k = $itemprefix ? $nbsp : ''; }else{ $j .= $icon[1]; $k = $itemprefix ? $icon[0] : ''; } $spacer = $itemprefix ? $itemprefix . $j : ''; $row['name'] = $spacer.$row['name']; $arr[] = $row; $number++; getTree($list,$row['id'],$itemprefix . $k . $nbsp); } } } return $arr; }
使用範例:
<?php header("Content-type:text/html;Charset=utf8"); function getTree($list,$pid=0,$itemprefix = '') { static $icon = array('│', '├', '└'); static $nbsp = " "; static $arr = array(); $number = 1; foreach($list as $row) { if($row['pid'] == $pid) { $brotherCount = 0; //判断当前有多少个兄弟分类 foreach($list as $r) { if($row['pid'] == $r['pid']) { $brotherCount++; } } if($brotherCount >0) { $j = $k = ''; if($number == $brotherCount) { $j .= $icon[2]; $k = $itemprefix ? $nbsp : ''; }else{ $j .= $icon[1]; $k = $itemprefix ? $icon[0] : ''; } $spacer = $itemprefix ? $itemprefix . $j : ''; $row['name'] = $spacer.$row['name']; $arr[] = $row; $number++; getTree($list,$row['id'],$itemprefix . $k . $nbsp); } } } return $arr; } //$list 模拟数据库查询出来的数据 $list = array(); $list = [ ['id'=>1,'pid'=>0,'name'=>'总经理'], ['id'=>9,'pid'=>7,'name'=>'人事二组职员2'], ['id'=>2,'pid'=>1,'name'=>'人事部经理'], ['id'=>3,'pid'=>2,'name'=>'人事一组长'], ['id'=>13,'pid'=>12,'name'=>'技术一组职员1'], ['id'=>4,'pid'=>3,'name'=>'人事一组职员1'], ['id'=>5,'pid'=>3,'name'=>'人事一组职员2'], ['id'=>6,'pid'=>3,'name'=>'人事一组职员3'], ['id'=>7,'pid'=>2,'name'=>'人事二组长'], ['id'=>8,'pid'=>7,'name'=>'人事二组职员1'], ['id'=>10,'pid'=>7,'name'=>'人事二组职员3'], ['id'=>15,'pid'=>12,'name'=>'技术一组职员3'], ['id'=>11,'pid'=>1,'name'=>'技术部经理'], ['id'=>12,'pid'=>11,'name'=>'技术一组长'], ['id'=>14,'pid'=>12,'name'=>'技术一组职员2'], ]; //执行函数 $list = getTree($list); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>层级下拉列表效果</title> <select name="" id=""> <?php foreach($list as $row): ?> <option value=""> <?php echo $row['name']; ?></option> <?php endforeach;?> </select> </head> <body> </body> </html>
效果:
#相關推薦:
以上是php如何實現分類樹狀的效果? (附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!