php如何实现分类树状的效果?(附代码)
内容导读
收集整理的这篇技术教程文章主要介绍了php如何实现分类树状的效果?(附代码),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2888字,纯文字阅读大概需要5分钟。
内容图文
本篇文章给大家带来的内容是关于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如何生成json?php生成json的方法代码
php使用位运算实现整数的加减乘除并测试(代码示例)
php实现万年历的完整代码
以上就是php如何实现分类树状的效果?(附代码)的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的php如何实现分类树状的效果?(附代码)全部内容,希望文章能够帮你解决php如何实现分类树状的效果?(附代码)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。