[请益] php 组成树状结构array请益

楼主: wuwt4y (Poky)   2019-01-23 20:18:20
想请问
我mongodb有一树状结构资料
每笔资料都有
root_id -> string
task_id -> string
children -> array [child1, child2, ...]
由root_id 可以捞到一堆资料,代表由同一root_id 底下任务
每一个task_id 只知道他的children
第一层就是root_id = task_id
需要由他往下爬
现在问题是前端要显示树状图
需要资料结构如下
{
root_id: {
child1:{
child11:{
......
}
},
child2: {
....
}
}
}
递回去爬所有资料是知道怎么做,
但是不知道怎么组成array
请各位大神提点一下
作者: carry0987 (carry)   2019-01-23 21:24:00
小弟我听你描述感觉像是要一个三维阵列?由小阵列到大阵列依序是child11->child1->root_id这样?那child2的子阵列是child21吗?child3下面有child31这样?我大概了解你的意思了,但是我手边没有电脑可以示范...呃,你看看这个图片,是不是你要的东西:https://i.imgur.com/dSfaF1t.jpghttps://i.imgur.com/1krdBVY.jpg像这样的?
楼主: wuwt4y (Poky)   2019-01-24 00:50:00
是n维阵列,可能甚至10层顺序是root>child1>child1.1>child1.1.1递回不是问题,只是不知道怎么组成array本想看做到那一层,就去记key,例如tree[root][child1][child1.1]可是当不同分支不知道如何merge比较好
作者: carry0987 (carry)   2019-01-24 09:08:00
原来如此,我是会写三维阵列啦,但是方法非常脑残,我之前写三维是用三个while串联,所以如果写成10维之类的应该会写到手软...这部分我是菜鸟,不知道有没有大大可以分享巨型阵列的写法?
作者: knives   2019-01-24 13:20:00
楼上,真的大大会跟你说不要写出多维的阵列出来,这真的很难维护
作者: MOONRAKER (㊣牛鹤鳗毛人)   2019-01-24 14:50:00
多维也没有什么要不要的 他都说前端需要了 那就是非要产生一个 然后就交给前端去render 没什么维护不维护你应该只需要跑两次 第一次把所有纪录组成$nodes阵列以task_id为$nodes的索引第二次先找出$root_id=$task_id那个node为root node依照他children的内容找出$nodes里面的项目接上去递回往下 直到children内容为空为止你可放心用 = 把下层节点复制到阵列里面
作者: KKFN (John)   2019-01-26 14:18:00
难度还好,其实核心重点在于找出最多维数是多少或是添增为子阵列的条件为何然后写成可以被呼叫的function,剩下的就是在function内判断如果符合子阵列条件,我就在function内再呼叫自己这个function一次。递回阵列就是用递回呼叫去解,维护上也只需要维护function即可。
作者: GoldRoger (黄金罗杰)   2019-01-27 08:55:00
这跟写BOM一样丫...
作者: shter (飞梭之影)   2019-02-06 02:51:00
如果问题是在前端,不见得要在 PHP 处理资料
作者: newways   2019-02-18 14:24:00
我会头跟内容分成两个array交给前端处理

Links booklink

Contact Us: admin [ a t ] ucptt.com