此JSON表示如下所示的Employee-> Supervisor关系:
{
"Pete": "Nick",
"Barbara": "Nick",
"Nick": "Sophie",
"Sophie": "Jonas"
}
在这种情况下,Nick是Pete和Barbara的主管,Sophie监督Nick。
我想以此为层次结构
{“Jonas" : [
{“Sophie": [
{“Nick" : [
{"Pete": []},
{"Barbara": []}
]}
]}
]}
我试图为键和值创建一个数组(值的偶数索引,键的奇数)
$i =0;
$arr[] = array();
foreach ($files as $key => $f)
{
$arr[$i] = $f;
$i++;
$arr[$i] = $key;
$i++;
}
反复查找具有偶数索引且不重复的根
$i++;
for($x=0;$x<=6;$x+2){
for($z=1;$z<7;$z+2){
if($arr[$x] != $arr[$z]){
#som code
}
}
}
然后找到下一个子节点,但仅适用于根节点
能帮上忙吗
答案 0 :(得分:0)
我假设输入数据有效(没有循环引用),并且只有一个人是负责人(在问题first version中,您没有提到PHP中的代码 (而且您也使用javascript标签),所以我在JS中提供了答案,但是您仍然可以在前端使用它)
let s={
"Pete": "Nick",
"Barbara": "Nick",
"Nick": "Sophie",
"Sophie": "Jonas"
}
let t={}; // t is temporary object
let head=Object.values(s).find(x=>!(x in s)) // find head
Object.entries(s).flat().map(x=>t[x]={[x]:[]}) // t contains name-objects
Object.keys(s).map(x=> t[s[x]][s[x]].push(t[x])) // object nesting in t
console.log(t[head]);