当前位置:首页 > PHP教程 > php应用 > 列表

php两种无限分类方法实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-22 21:35:21 浏览: 评论:0 

这篇文章主要介绍了php两种无限分类方法实例,本文给出了递归方法和非递归方法实现的无限分类实例,需要的朋友可以参考下

一、递归方法,代码如下:

  1. $items = array
  2. array('id'=>1,'pid'=>0,'name'=>'一级11'), 
  3. array('id'=>2,'pid'=>0,'name'=>'一级12'), 
  4. array('id'=>3,'pid'=>1,'name'=>'二级21'), 
  5. array('id'=>4,'pid'=>3,'name'=>'三级31'), 
  6. array('id'=>5,'pid'=>1,'name'=>'二级22'), 
  7. array('id'=>6,'pid'=>3,'name'=>'三级32'), 
  8. array('id'=>7,'pid'=>6,'name'=>'四级41'), 
  9. ); 
  10. $i = 0; 
  11. function formatTree($arr$pid = 0){ 
  12. $tree = array(); 
  13. $temp = array(); 
  14. global $i
  15. if($arr){ 
  16. foreach($arr as $k=>$v){ 
  17. if($v['pid'] == $pid){// 
  18. $temp = formatTree($arr$v['id']); 
  19. $temp && $v['son'] = $temp
  20. $tree[] = $v
  21. return $tree
  22. print_r(formatTree($items)); 

二、非递归方法,代码如下:

  1. function genTree($items) { 
  2.     $tree = array(); //格式化好的树 
  3.     foreach ($items as $item
  4.         if (isset($items[$item['pid']])){ 
  5.             $items[$item['pid']]['son'][] = &$items[$item['id']]; 
  6.         } 
  7.         else
  8.             $tree[] = &$items[$item['id']]; 
  9.         } 
  10.     return $tree
  11. $items = array
  12.     1 => array('id' => 1, 'pid' => 0, 'name' => '一级11'), 
  13.     2 => array('id' => 2, 'pid' => 1, 'name' => '二级21'), 
  14.     3 => array('id' => 3, 'pid' => 1, 'name' => '二级23'), 
  15.     4 => array('id' => 4, 'pid' => 9, 'name' => '三级31'), 
  16.     5 => array('id' => 5, 'pid' => 4, 'name' => '四级43'), 
  17.     6 => array('id' => 6, 'pid' => 9, 'name' => '三级32'), 
  18.     7 => array('id' => 7, 'pid' => 4, 'name' => '四级41'), 
  19.     8 => array('id' => 8, 'pid' => 4, 'name' => '四级42'), 
  20.     9 => array('id' => 9, 'pid' => 1, 'name' => '二级25'), 
  21.     10 => array('id' => 10, 'pid' => 11, 'name' => '二级22'), 
  22.     11 => array('id' => 11, 'pid' => 0, 'name' => '一级12'), 
  23.     12 => array('id' => 12, 'pid' => 11, 'name' => '二级24'), 
  24.     13 => array('id' => 13, 'pid' => 4, 'name' => '四级44'), 
  25.     14 => array('id' => 14, 'pid' => 1, 'name' => '二级26'), 
  26.     15 => array('id' => 15, 'pid' => 8, 'name' => '五级51'), 
  27.     16 => array('id' => 16, 'pid' => 8, 'name' => '五级52'), 
  28.     17 => array('id' => 17, 'pid' => 8, 'name' => '五级53'), 
  29.     18 => array('id' => 18, 'pid' => 16, 'name' => '六级64'), 
  30. ); 
  31. print_r(genTree($items));

Tags: php无限分类

分享到: