“我正在设置文件浏览器并将文件夹名称保存在数据库中。任意数量的文件夹都可以保存在数据库中,我想从保存的数据创建一个 json 树。
这是我的数据库表结构
folder_id folder_name parent_id
1 parentFolder1 <NULL>
2 parentFolder2 <NULL>
3 subFolder1 1
4 subFolder2 1
5 subFolder3 3
6 subFolder4 2
7 subFolder5 5
parent_id是引用folder_id的外键。
这是我尝试从上述数据库创建的 json 树结构,将来将添加更多父文件夹和子文件夹。是否可以从上面的表结构创建json树?有人可以帮我吗?
[
{
"id": "1",
"value": "parentFolder1",
"data": [
{
"id": "3",
"value": "subFolder1",
"data": [
{
"id": "5",
"value": "subFolder3",
"data": [
{
"id": "7",
"value": "subFolder5",
"data": []
]
}
]
}
},
{
"id": "4",
"value": "subFolder2",
"data": []
}
]
},
{
"id": "2",
"value": "parentFolder2",
"data": [
{
"id": "6",
"value": "subFolder4",
"data": []
}
]
}
]
最佳答案
$arr = array(
array('id'=>100, 'parentid'=>0, 'name'=>'a'),
array('id'=>101, 'parentid'=>100, 'name'=>'a'),
array('id'=>102, 'parentid'=>101, 'name'=>'a'),
array('id'=>103, 'parentid'=>101, 'name'=>'a'),
);
$new = array();
foreach ($arr as $a){
$new[$a['parentid']][] = $a;
}
$tree = createTree($new, array($arr[0]));
print_r($tree);
function createTree(&$list, $parent){
$tree = array();
foreach ($parent as $k=>$l){
if(isset($list[$l['id']])){
$l['data'] = createTree($list, $list[$l['id']]);
}
$tree[] = $l;
}
return $tree;
}
关于php - 如何从数据库创建 JSON 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57534239/