0

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

+++++++++++++++++++++++++++++++
| 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

谢谢。

4

2 回答 2

1
<?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);

?>
于 2013-08-01T15:46:17.560 回答
1

您将需要另一个递归函数来迭代您的数组,如下所示:

function printCategories($categories, $level = 1) {                                
    foreach ($categories as $cat => $subCats) {                                    
        echo str_repeat('-', $level) . $cat . "\n";                                
        printCategories($subCats, $level+1);                                       
    }                                                                              
}                                                                                  
printCategories($categories);    
于 2013-08-01T15:45:11.880 回答