树的结构大概是这样的
{
"start": "你是啊",
"end": "你是谁啊",
"content": "",
"msg_type": "",
"sub": [{
"start": "开始 1",
"end": "开始 2",
"content": "",
"msg_type": "",
"sub": [{
"start": "",
"end": "",
"content": "",
"msg_type": "",
"sub": [],
"name": "A1"
}, {
"start": "",
"end": "",
"content": "",
"msg_type": "",
"sub": [],
"name": "A2"
}, {
"start": "",
"end": "",
"content": "",
"msg_type": "",
"sub": []
}],
"name": "A"
}, {
"start": "B1",
"end": "B2 ",
"content": "",
"msg_type": "",
"sub": [{
"start": "这是 B1 的结构",
"end": "这是 B2 的结构",
"content": "",
"msg_type": "",
"sub": [],
"name": "B111"
}, {
"start": "",
"end": "",
"content": "",
"msg_type": "",
"sub": [],
"name": "B222"
}],
"name": "B"
}]
}
1
felixin 2020-12-14 21:12:32 +08:00 via Android
数据量小加列 parent id,数据量大上图数据库
|
2
awanganddong OP @felixin 前端传递过来的值,我要处理为数组格式,存起来
|
3
lithbitren 2020-12-14 21:28:00 +08:00
每个对象通过一个唯一 id 来访问,sub 字段改成存 id,parent id 视情况可存可不存。
|
4
awanganddong OP @lithbitren 前端只能给我提供这种结构,
|
5
lithbitren 2020-12-14 22:09:00 +08:00
@awanganddong 唯一 id 当然是后端甚至数据库生成的了,可以看作在用指针管理内存,id 就是指针地址。
|
6
awanganddong OP ```
public function tree2List($list, $pid = 0) { static $arr = []; $i = 1; foreach ($list as $item) { $subTree = $item['sub']; unset($item['sub']); $item['pid'] = $pid . $i; $arr[] = $item; if (is_array($subTree) && $subTree) { $this->tree2List($subTree, $item['pid']); } $i++; } return $arr; } ``` 结构写出来了 现在唯一的不足就是用 pid 去定位子集元素这里处理起来比较麻烦 @lithbitren 数据结构这里太薄弱了 终于实现了 |