-2
moduleIdとparentIdを含むJSONデータがあります。モジュールの親子のマップ構造を持つ新しいJSONが必要です。親子ツリーの作成JSON
** parentIdはnullにすることができます。つまり、モジュールには親がありません。
現在JSON-
[{
"moduleId": 1,
"parentId": null
},
{
"moduleId": 2,
"parentId": 1
},
{
"moduleId": 3,
"parentId": 1
},
{
"moduleId": 4,
"parentId": null
},
{
"moduleId": 5,
"parentId": null
},
{
"moduleId": 6,
"parentId": 3
}
]
必要JSON-
[{
"moduleId": 1,
"child": [{
"moduleId": 2,
"child": []
},
{
"moduleId": 3,
"child":[{
"moduleId": 6,
"child": []
}]
}]
},
{
"moduleId": 4,
"child": []
},
{
"moduleId": 5,
"child": []
}
]
現在のコード
問題 - 子供の内部の子供たちは、マップされたばかりされていない
function tree($list)
{
$map = new stdClass();
$roots = [];$node = [];
for($i=0; $i<sizeof($list); $i++)
{
$c=$list[$i]["moduleId"];
$map->$c = $i;
$list[$i]["children"] = []; // initialize the children
}
for($i=0; $i<sizeof($list); $i++)
{
$node = $list[$i];
if($node["parentId"] !== "")
{
$m = $node["parentId"];
$val = $map->$m;
$child = new StdClass;
$child->moduleId = $node["moduleId"];
$child->parentId = $node["parentId"];
$child->children = [];
array_push($list[$val]["children"],$node);
}
}
for($i = 0;$i<sizeof($list);$i++)
{
if($list[$i]["parentId"] == "")
{
array_push($roots, $list[$i]);
}
}
return json_encode($roots);
}
私はそれを理解カントでる。ここでのすべての答えは、さまざまな種類の結果をもたらします。 任意の言語(java、C、php、js、pythonなど)を使用できます。ありがとうございました。あなたが投稿し
は – YvesLeBorg
が、私が追加した@YvesLeBorgも** [MCVE]として知られている** '必要なcode' **、(https://stackoverflow.com/help/mcve)**が欠落しています私の現在のコード。問題もある。助けてください – RonnyRules