Example of infinite classification (recursive version) implemented in PHP

WBOY
Release: 2016-07-25 09:04:49
Original
897 people have browsed it
  1. Array

  2. (
  3. [0] => Array
  4. (
  5. [id] => 1
  6. [name] => dev
  7. [parentid] => 0
  8. [childs] => Array
  9. (
  10. [0] => Array
  11. (
  12. [id] => 2
  13. [name] => php
  14. [parentid] => 1
  15. [childs] => Array
  16. (
  17. [0] => Array
  18. (
  19. [id] => 3
  20. [name] => smarty
  21. [parentid] => 2
  22. )

  23. [1] => Array

  24. (
  25. [id] => 5
  26. [name] => pdo
  27. [parentid] => 2
  28. [childs] => Array
  29. (
  30. [0] => Array
  31. (
  32. [id] => 6
  33. [name] => pdo-mysql
  34. [parentid] => 5
  35. )

  36. )

  37. )

  38. )

  39. )

  40. [1] => Array

  41. (
  42. [id] => 7
  43. [name] => java
  44. [parentid] => 1
  45. )

  46. )

  47. )

  48. [1] => Array

  49. (
  50. [id] => 4
  51. [name] => life
  52. [parentid] => 0
  53. )
  54. )

复制代码

看有没有更简单的实现方法

  1. $rows = array(

  2. array(
  3. 'id' => 1,
  4. 'name' => 'dev',
  5. 'parentid' => 0
  6. ),
  7. array(
  8. 'id' => 2,
  9. 'name' => 'php',
  10. 'parentid' => 1
  11. ),
  12. array(
  13. 'id' => 3,
  14. 'name' => 'smarty',
  15. 'parentid' => 2
  16. ),
  17. array(
  18. 'id' => 4,
  19. 'name' => 'life',
  20. 'parentid' => 0
  21. ),
  22. array(
  23. 'id' => 5,
  24. 'name' => 'pdo',
  25. 'parentid' => 2
  26. ),
  27. array(
  28. 'id' => 6,
  29. 'name' => 'pdo-mysql',
  30. 'parentid' => 5
  31. ),
  32. array(
  33. 'id' => 7,
  34. 'name' => 'java',
  35. 'parentid' => 1
  36. )
  37. );

  38. // 72648

  39. // 84072
  40. function findChild(&$arr,$id){
  41. $childs=array();
  42. foreach ($arr as $k => $v){
  43. if($v['parentid']== $id){
  44. $childs[]=$v;
  45. }
  46. }
  47. return $childs;
  48. }

  49. function build_tree($root_id){

  50. global $rows;
  51. $childs=findChild($rows,$root_id);
  52. if(empty($childs)){
  53. return null;
  54. }
  55. foreach ($childs as $k => $v){
  56. $rescurTree=build_tree($v[id]);
  57. if( null != $rescurTree){
  58. $childs[$k]['childs']=$rescurTree;
  59. }
  60. }
  61. return $childs;
  62. }

  63. $tree=build_tree(0);

  64. echo memory_get_usage();
  65. print_r($tree);
  66. ?>

复制代码
Articles you may be interested in: Example of php unlimited classification (imitation Taobao product classification) Example of infinite classification (recursive version) implemented in php Unlimited classification using php arrays (without database and recursion) A function written in php to recursively implement unlimited classification and generate drop-down lists


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template