0

DBにこのテーブルがあります(正しく表示されていることを願っています):

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

渡された親 (この場合は「2」) から多次元配列を作成する PHP 再帰関数を作成しました。したがって、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

次のように、配列を反復処理するには別の再帰関数が必要です。

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 に答える
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 に答える