马富天PHP博客

PHP使用递归实现无限分类

学习笔记 马富天 2016-04-28 15:34:15 18 0

【摘要】一个PHP利用递归方法实现的无限分类。

完整代码如下:

  1. //	pid = 0 是顶级分类
  2. //	pid 是父级分类的id 
  3. $data = array(			
  4. 	0 => array(
  5. 		'id' => 1,
  6. 		'pid' => 0,
  7. 		'city' => '中国'
  8. 	),
  9. 	1 => array(
  10. 		'id' => 2,
  11. 		'pid' => 1,
  12. 		'city' => '江苏'
  13. 	),
  14. 	2 => array(
  15. 		'id' => 3,
  16. 		'pid' => 1,
  17. 		'city' => '福建'
  18. 	),
  19. 	3 => array(
  20. 		'id' => 4,
  21. 		'pid' => 2,
  22. 		'city' => '南京'
  23. 	),
  24. 	4 => array(
  25. 		'id' => 5,
  26. 		'pid' => 2,			
  27. 		'city' => '无锡'
  28. 	),			
  29. 	5 => array(
  30. 		'id' => 6,
  31. 		'pid' => 3,
  32. 		'city' => '福州'
  33. 	),
  34. 	6 => array(
  35. 		'id' => 7,
  36. 		'pid' => 3,
  37. 		'city' => '龙岩'
  38. 	),		
  39. 	7 => array(
  40. 		'id' => 8,
  41. 		'pid' => 7,
  42. 		'city' => '永定'
  43. 	),
  44. 	8 => array(
  45. 		'id' => 9,
  46. 		'pid' => 1,
  47. 		'city' => '湖南'				
  48. 	),
  49. 	9 => array(
  50. 		'id' => 10,
  51. 		'pid' => 2,
  52. 		'city' => '苏州'				
  53. 	)
  54. );		
  55. function category($data,$pid = 0,$level = 1){
  56. 	// 新的数组存放按层级排好序的类别
  57.     $newarr = array();
  58.     //	深度优先遍历
  59.     //	遍历所有同一层级的父级分类(即$pid相同的分类)
  60.     foreach($data as $k => $v) {
  61.         if($v['pid'] == $pid){
  62.             $v['level'] = $level;	//	层级
  63.             $newarr[] = $v;
  64.             //	array_merage():合并一个或多个数组
  65.             //	递归遍历$data,查找$pid等于$v['id']的子类
  66.             $newarr = array_merge($newarr,category($data,$v['id'],$level + 1));
  67.         }
  68.     }
  69.     return $newarr;
  70. }
  71. $newarr = category($data,0,1);
  72. foreach($newarr as $v) {
  73. 	$space = str_repeat(' - ',$v['level']-1);
  74. 	echo $space.$v['city'].'<br />';
  75. }
请输入图片名称

$data 是从数据库中取出来的分类。涉及到两个PHP内置函数:array_merge()和str_repeat()。

版权归 马富天PHP博客 所有

本文标题:《PHP使用递归实现无限分类》

本文链接地址:http://www.mafutian.net/73.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 完整的HTML5页面的模板-自适应页面 》 下一篇《 Apche2.4.9下开启访问权限 》
分享到:

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码