PHP создает многомерный массив из массива с реляционными данными [дубликат]

Possible Duplicate:
Converting an array from one to multi-dimensional based on parent ID values

Я работаю в PHP.

У меня есть следующий массив, который имеет реляционные данные (родительские дочерние отношения).

Array        
(        
    [5273] => Array        
        (        
            [id] => 5273        
            [name] => John Doe        
            [parent] =>         
        )        

    [6032] => Array        
        (        
            [id] => 6032        
            [name] => Sally Smith        
            [parent] => 5273        
        )        

    [6034] => Array        
        (        
            [id] => 6034        
            [name] => Mike Jones        
            [parent] => 6032        
        )        

    [6035] => Array        
        (        
            [id] => 6035        
            [name] => Jason Williams        
            [parent] => 6034        
        )        

    [6036] => Array        
        (        
            [id] => 6036        
            [name] => Sara Johnson        
            [parent] => 5273        
        )        

    [6037] => Array        
        (        
            [id] => 6037        
            [name] => Dave Wilson        
            [parent] => 5273        
        )        

    [6038] => Array        
        (        
            [id] => 6038        
            [name] => Amy Martin        
            [parent] => 6037        
        )        
)        

Мне нужно, чтобы это было в этом формате JSON:

{        
   "id":"5273",        
   "name":"John Doe",        
   "data":{        

   },        
   "children":[        
      {        
         "id":" Sally Smith",        
         "name":"6032",        
         "data":{        

         },        
         "children":[        
            {        
               "id":"6034",        
               "name":"Mike Jones",        
               "data":{        

               },        
               "children":[        
                  {        
                     "id":"6035",        
                     "name":"Jason Williams",        
                     "data":{        

                     },        
                     "children":[        
                        {        
                           "id":"node46",        
                           "name":"4.6",        
                           "data":{        

                           },        
                           "children":[        

                           ]        
                        }        
                     ]        
                  }        
               ]        
            },        
            {        
               "id":"6036",        
               "name":"Sara Johnson",        
               "data":{        

               },        
               "children":[        

               ]        
            },        
            {        
               "id":"6037",        
               "name":"Dave Wilson",        
               "data":{        

               },        
               "children":[        
                  {        
                     "id":"6038",        
                     "name":"Amy Martin",        
                     "data":{        

                     },        
                     "children":[        

                     ]        
                  }        
               ]        
            }        
         ]        
      }        
   ]        
}        

Я знаю, что мне нужно создать многомерный массив и запустить его через json_encode (). Я также считаю, что этот метод, используемый для этого, должен быть рекурсивным, поскольку данные реального мира могут иметь неизвестное количество уровней.

Я был бы рад показать некоторые из моих подходов, но они не сработали.

Может кто-нибудь мне помочь?

Меня попросили поделиться моей работой. Это то, что я пробовал, но я не подобрался настолько близко, что не знаю, насколько это полезно.

Я сделал массив только отношений.

foreach($array as $k => $v){
    $relationships[$v['id']] = $v['parent'];
}

Я думаю (основываясь на другом посте SO), использовал эти реляционные данные для создания нового многомерного массива. Если я получу это на работу, я буду работать над добавлением правильных & quot; детей & quot; этикетки и т. д.

$childrenTable = array();
    $data = array();
    foreach ($relationships as $n => $p) {
      //parent was not seen before, put on root
      if (!array_key_exists($p, $childrenTable)) {
          $childrenTable[$p] = array();
          $data[$p] = &$childrenTable[$p];  
      }
      //child was not seen before
      if (!array_key_exists($n, $childrenTable)) {
          $childrenTable[$n] = array();
      }
      //root node has a parent after all, relocate
      if (array_key_exists($n, $data)) {
          unset($data[$n]);
      }
      $childrenTable[$p][$n] = &$childrenTable[$n];      
    }
    unset($childrenTable);

print_r($data);

Ответы на вопрос(3)

Ваш ответ на вопрос