当前位置:Gxlcms > PHP教程 > PHP无限极分类实例详解

PHP无限极分类实例详解

时间:2021-07-01 10:21:17 帮助过:18人阅读

在我们工作中,无限级分类应用非常多,其实其思想并不难,无非运用递归思想自己调用自己罢了。下面就来看看我写的无限级分类函数:

header("content-type:text/html;charset=utf-8");

  1. //测试数组
  2. $arr=array
  3. (
  4. array('id'=>2,'name'=>'分类2','parent_id'=>1),
  5. array('id'=>9,'name'=>'分类9','parent_id'=>8),
  6. array('id'=>1,'name'=>'分类1','parent_id'=>0),
  7. array('id'=>7,'name'=>'分类7','parent_id'=>0),
  8. array('id'=>3,'name'=>'分类3','parent_id'=>2),
  9. array('id'=>4,'name'=>'分类4','parent_id'=>0),
  10. array('id'=>6,'name'=>'分类6','parent_id'=>5),
  11. array('id'=>8,'name'=>'分类8','parent_id'=>7),
  12. array('id'=>5,'name'=>'分类5','parent_id'=>4)
  13. );
  14. /**
  15. * 已知子类id 得到父类树形结构
  16. * @param [type] $data [要查询的数组]
  17. * @param [type] $id [子类id]
  18. * @param integer $level [缩进系数]
  19. * @param boolean $isClear [调用时为true,多次调用不相互叠加]
  20. * @return [type] [返回结果树形结构]
  21. */
  22. function getParent($data,$id,$level=0,$is_Clear=false){
  23. static $_rec = array();
  24. if ($is_Clear == true) {
  25. $_rec = array();
  26. }
  27. foreach ($data as $k=>$v) {
  28. if ( $v['id'] == $id) {
  29. $_rec[] =$v;
  30. // if ($v['parent_id'] != 0) {
  31. getParent($data,$v['parent_id']);
  32. // }
  33. }
  34. }
  35. $rec = array_reverse($_rec);
  36. for ($i=0; $i
  37. $rec[$i]['level']=$level;
  38. $level++;
  39. }
  40. //把自己拿出来,自己不属于父类
  41. array_pop($rec);
  42. return $rec;
  43. }
  44. /**
  45. * 已知父类id找 得到子类树形结构
  46. * @param [type] $data [要查询的数组]
  47. * @param [type] $id [父类id]
  48. * @param integer $level [缩进系数]
  49. * @param boolean $isClear [调用时为true,多次调用不相互叠加]
  50. * @return [type] [返回结果树形结构]
  51. */
  52. function getChilds($data,$id,$level=0,$isClear=false){
  53. static $rec = [];
  54. if ($isClear == true) {
  55. $rec =[];
  56. }
  57. foreach ($data as $k => $v) {
  58. if ($v['parent_id'] == $id) {
  59. $v['level']=$level;
  60. $rec[] =$v;
  61. getChilds($data,$v['id'],++$level);
  62. }
  63. }
  64. return $rec;
  65. }
  66. /**
  67. * 已知父类id,得到子类id树形结构;区别在于$row[]=$v['id'],只赋值id;
  68. * getParent(),可改写成getParentid();
  69. * @param [type] $data [description]
  70. * @param [type] $id [description]
  71. * @param boolean $col [description]
  72. * @return [type] [description]
  73. */
  74. function getChildsId($data,$id,$col=false){
  75. static $row=array();
  76. if($col)
  77. $row=array();
  78. foreach ($data as $k => $v) {
  79. if($v['parent_id'] ==$id){
  80. $row[]=$v['id'];
  81. getChildsId($data,$v['id']);
  82. }
  83. }
  84. return $row;
  85. }
  86. /**
  87. * 已知父类id,得到树形结构;
  88. * 结合getParent(),若不弹出自己,即已知子类id,得到树形结构
  89. * @param [type] $data [description]
  90. * @param [type] $parent_id [description]
  91. * @param integer $level [description]
  92. * @param boolean $col [description]
  93. * @return [type] [description]
  94. */
  95. function tree($data,$parent_id,$level=0,$col=false){
  96. static $res=array();
  97. if($col) $res=array();
  98. foreach ($data as $k => $v) {
  99. if($v['parent_id'] == $parent_id){
  100. $v['level']=$level;
  101. $res[]=$v;
  102. tree($data,$v['id'],$level+1);
  103. }
  104. }
  105. return $res;
  106. }

相关推荐:

php无限极分类详解

如何创建无限极分类树型结构

PHP实现菜单无限极分类

以上就是PHP无限极分类实例详解的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行