2017-06-26 36 views
0

キーに基づいて多次元配列を作成したい。再帰的にネストされた配列を作成する

以下は私の元の配列です。

オリジナル配列。

Array 
(
    [13] => Array 
     (
      [member_id] => 13 
      [parent_id] => 0 
     ) 

    [14] => Array 
     (
      [member_id] => 14 
      [parent_id] => 13 
     ) 

    [15] => Array 
     (
      [member_id] => 15 
      [parent_id] => 14 
     ) 

) 

注提供配列は静的であるが、それは動的です。

必要なアレイ

Array 
(
    [13] => Array 
     (
      [member_id] => 13 
      [parent_id] => 0 
      [14] => Array 
      (
       [member_id] => 14 
       [parent_id] => 13 
       [15] => Array 
       (
        [member_id] => 15 
        [parent_id] => 14 
       ) 
      ) 
     ) 
) 

感謝。

+0

私はあなたの親子関係を前提としたいと思います。 – bugscoder

+0

はい、親/子が正確です。 –

+2

https://stackoverflow.com/questions/8587341/recursive-function-to-generate-multidimensional-array-from-database-result このリンクをクリックすると、良い例が得られます。私もこれを使用します。 – bugscoder

答えて

0

PHP

function buildTree(array $elements, $parentId = 0) { 
    $branch = array(); 

    foreach ($elements as $element) { 
     if ($element['parent_id'] == $parentId) { 
      $children = buildTree($elements, $element['member_id']); 
      if ($children) { 
       $element['children'] = $children; 
      } 
      $branch[] = $element; 
     } 
    } 

    return $branch; 
} 

$tree = buildTree($output); 

出力

Array 
(
    [13] => Array 
     (
      [member_id] => 13 
      [parent_id] => 0 
      [children] => Array 
      (
       [0] => Array 
       (
        [member_id] => 14 
        [parent_id] => 13 
        [children] => Array 
        (
         [0] => Array 
         (
          [member_id] => 15 
          [parent_id] => 14 
         ) 
        ) 
       ) 
      ) 
     ) 
) 
関連する問題