我们有时候需要将分类数据按树状效果展示出来,能一眼就看出来层级的组织关系,实现如下:
注意:我所讲的分类为无限极分类 ,如下的函数所涉及的表字段名有三个 id pid name ,如果有定义名称不同请查询分类列表数据时对应给字段取别名对应上 id pid name ,比如 你的pid 表字段名定义为 parent_id 那么查询时 给该字段取别名为 parent_id as pid
函数如下:
/** * $list 为查询 出来的二维数组function getTree($list,$pid=0,$itemprefix = ) { html' target='_blank'>static $icon = array( │ , ├ , └ static $nbsp = 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 = 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如何生成json?php生成json的方法代码
php使用位运算实现整数的加减乘除并测试(代码示例)
php实现万年历的完整代码
以上就是php如何实现分类树状的效果?(附代码)的详细内容,PHP教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答