博客列表 >PHP部门转成树形

PHP部门转成树形

鱼的熊掌
鱼的熊掌原创
2022年08月10日 14:28:25437浏览
  1. class Totree{
  2. public function school_totree(){
  3. $list=[
  4. ['id'=>1,'name'=>'学校','pid'=>0],
  5. ['id'=>2,'name'=>'一年级','pid'=>1],
  6. ['id'=>3,'name'=>'1班','pid'=>5],
  7. ['id'=>4,'name'=>'2班','pid'=>2],
  8. ['id'=>5,'name'=>'二年级','pid'=>1],
  9. ['id'=>6,'name'=>'3班','pid'=>5],
  10. ['id'=>7,'name'=>'4班','pid'=>5],
  11. ['id'=>8,'name'=>'4班','pid'=>2],
  12. ];
  13. $res=$this->totree($list,$pid=0,$level=0);
  14. echo '<pre>';
  15. var_dump($res);
  16. }
  17. /**
  18. * @description: 转成树形数据
  19. * @param {*} $list 初始数据
  20. * @param {*} $pid 父id
  21. * @param {*} $level 层级
  22. * @param {*} $pid_name pid字段名称 默认pid
  23. * @param {*} $id_name 主键id 名称
  24. * @return {*}
  25. */
  26. public function totree($list,$pid=0,$level=0,$pid_name='pid',$id_name='id')
  27. {
  28. $arr=[];
  29. $level++;
  30. foreach($list as $k => $v){
  31. if($pid==$v[$pid_name]){
  32. $v['level']=$level;
  33. $v['next']=$this->totree($list,$v[$id_name],$level,$pid_name,$id_name);
  34. $arr[]=$v;
  35. }
  36. }
  37. return $arr;
  38. }
  39. }
  40. /**
  41. * @description: 转成树形显示-
  42. * @param {*} $result 结果
  43. * @param {*} $list 初始数据
  44. * @param {*} $pid 父id
  45. * @param {*} $level 层级
  46. * @param {*} $pid_name pid字段名称 默认pid
  47. * @param {*} $id_name 主键id 名称
  48. * @return {*}
  49. */
  50. public function totreestr($list,$pid=0,$level=0,$pid_name='pid',$id_name='id')
  51. {
  52. $arr=[];
  53. $level++;
  54. foreach($list as $k => $v){
  55. if($pid==$v[$pid_name]){
  56. // $v['level']=$level;
  57. $name_str='';
  58. if($level>1){
  59. for($i=0;$i<$level-1;$i++){
  60. $name_str=$name_str.'▬';
  61. }
  62. }
  63. $v['name']=$name_str.$v['name'];
  64. $arr[]=$v;
  65. $next=$this->totreestr($list,$v[$id_name],$level,$pid_name,$id_name);
  66. if(!empty($next)){
  67. foreach($next as $kk => $vv){
  68. $arr[]=$vv;
  69. }
  70. }
  71. }
  72. }
  73. return $arr;
  74. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议