【问题标题】:Create Json from a mysql Result Set Resembling a Tree [closed]从类似于树的mysql结果集中创建Json [关闭]
【发布时间】:2016-10-19 13:43:34
【问题描述】:

问题是得到如下结果集:

       '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"}]

有什么建议吗?

【问题讨论】:

  • 你尝试了什么?
  • 如果你不知道怎么做,我的建议是学习php处理json的教程
  • 谁知道这些是什么'org1', 'unit1', 'proj1'
  • 把json转换成上面提到的格式????这是问题吗?
  • @devpro,是的,你能解决吗?

标签: php mysql json algorithm tree


【解决方案1】:

你可以使用类似的东西

$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,您可以随时改进它。

DEMO

【讨论】:

  • @c00der 能否请您选择我的答案作为“答案”。
猜你喜欢
  • 2013-01-03
  • 2019-09-28
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2015-04-03
  • 1970-01-01
  • 2015-08-20
相关资源
最近更新 更多