【问题标题】:create a subcategories hierarchy from multidimensional array从多维数组创建子类别层次结构
【发布时间】:2013-08-01 15:36:57
【问题描述】:

我的数据库中有这张表(我希望它正确显示):

+++++++++++++++++++++++++++++++ | id_child |--| id_parent | +++++++++++++++++++++++++++++++ | 5 |--| 2 | | 6 |--| 2 | | 7 |--| 4 | | 8 |--| 4 | | 9 |--| 5 | | 10 |--| 5 | | 11 |--| 9 | | 12 |--| 9 | --------------------------

我编写了一个 php 递归函数,它从传递的父级(在本例中为“2”)创建一个多维数组。 所以,如果我放一个 print_r 我会得到这个结果:

Array ( [5] => Array ( [9] => Array ( [11] => Array ( ) [12] => Array ( ) ) [10] => Array ( ) ) [6] => Array ( ) )

如何获得这种类型的结构? (我排除了第一个父母,2)

(2) -5 --9 ----11 ----12 --10 -6

谢谢。

【问题讨论】:

  • (at)klkvsk, (at)Eugene Rieck:您的解决方案非常有效。有没有比数组更好的解决方案来快速获取孩子的父母和父母的孩子?
  • 例如:如果我想获得 parent=9(11 和 12)的孩子,有没有简单的方法?我想我的数组会改变
  • 只需在 ID=9 处启动递归函数并从那里生成新数组

标签: php mysql tree hierarchy


【解决方案1】:

您需要另一个递归函数来遍历您的数组,如下所示:

function printCategories($categories, $level = 1) {                                
    foreach ($categories as $cat => $subCats) {                                    
        echo str_repeat('-', $level) . $cat . "\n";                                
        printCategories($subCats, $level+1);                                       
    }                                                                              
}                                                                                  
printCategories($categories);    

【讨论】:

    【解决方案2】:
    <?php
    
    function printtree($tree, $level) {
      $prefix=str_repeat('-',$level);
      foreach ($tree as $k=>$v) {
        echo "$prefix$k<br>\n";
        if (is_array($v)) if (sizeof($v)>0) printtree($v,$level+1);
       }
    }
    
    $tree=array( 5=>array(9=>array(11=>array(), 12=>array()), 10=>array()), 6=>array());
    printtree($tree,1);
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多