创建Json从mysql的结果集类似于树


Create Json from a mysql Result Set Resembling a Tree

问题是得到以下结果集:

       'org1', 'unit1', 'proj1'
       'org1', 'unit1', 'proj2'
       'org1', 'unit2', 'proj1'
       'org1', 'unit2', 'proj2'           
       'org2', 'unit1', 'proj1'
       'org2', 'unit1', 'proj2'

到php中的以下部分:

[{"units": [{"name": "unit1", "projects": ["project1", "project2"]}, {"name": "unit2", "projects": ["project1", "project2"]}], "name": "org1"}, {"units": [{"name": "unit1", "projects": ["project1", "project2"]}], "name": "org2"}]

有什么建议吗?

你可以使用

$final_array = array();
foreach($array as $row){
  $final_array[$row[0]][$row[1]][] = $row[2];
}

现在,这将"将SQL结果数组转换为多维数组/树",但还不是您想要的。所以我们必须重新处理这个数组。

$final_array_2 = array(); // Lets go deep
foreach ($final_array as $name => $units) {
    $quarterfinal_array = array(); // Not deep enough
    $semi_final_array = array();
    foreach ($units as $proj_name => $projects) {
        $nano_final_array = array(); // Lets dig deeper ;)
        $nano_final_array['name'] = $proj_name;
        $nano_final_array['projects'] = $projects;
        $semi_final_array[] = $nano_final_array;
    }
    $quarterfinal_array['units'] = $semi_final_array;
    $quarterfinal_array['name'] = $name;
    $final_array_2[] = $quarterfinal_array;
}

echo json_encode($final_array_2);

PS:对不起,我选择的变量名不是最理想的,但他们得到的工作完成;)这是P.O.C,你可以随时改进。