fork(1) download
  1. <?php
  2. $arr = array(
  3. 'id' => '1',
  4. 'name' => 'Имя раздела 1',
  5. 'parentid' => '0'
  6. ),
  7. 'id' => '2',
  8. 'name' => 'Имя раздела 2',
  9. 'parentid' => '0'
  10. ),
  11. 'id' => '3',
  12. 'name' => 'Имя раздела 3',
  13. 'parentid' => '1'
  14. ),
  15. 'id' => '4',
  16. 'name' => 'Имя раздела 4',
  17. 'parentid' => '2'
  18. ),
  19. 'id' => '5',
  20. 'name' => 'Имя раздела 5',
  21. 'parentid' => '4'
  22. ),
  23. 'id' => '6',
  24. 'name' => 'Имя раздела 6',
  25. 'parentid' => '2'
  26. ),
  27. );
  28.  
  29.  
  30. function form_tree($mess)
  31. {
  32. if (!is_array($mess)) {
  33. return false;
  34. }
  35. $tree = array();
  36. foreach ($mess as $value) {
  37. $tree[$value['parentid']][] = $value;
  38. }
  39. return $tree;
  40. }
  41.  
  42.  
  43. function build_tree($cats, $parent_id)
  44. {
  45. if (is_array($cats) && isset($cats[$parent_id])) {
  46. $tree = '<ul>';
  47. foreach ($cats[$parent_id] as $cat) {
  48. $tree .= '<li>' . $cat['name'];
  49. $tree .= build_tree($cats, $cat['id']);
  50. $tree .= '</li>';
  51. }
  52. $tree .= '</ul>';
  53. } else {
  54. return false;
  55. }
  56. return $tree;
  57. }
  58.  
  59.  
  60. $tree = form_tree($arr);
  61. echo build_tree($tree, 0);
Success #stdin #stdout 0.02s 24400KB
stdin
Standard input is empty
stdout
<ul><li>Имя раздела 1<ul><li>Имя раздела 3</li></ul></li><li>Имя раздела 2<ul><li>Имя раздела 4<ul><li>Имя раздела 5</li></ul></li><li>Имя раздела 6</li></ul></li></ul>