php - 如何从数据库创建 JSON 树

标签 php mysql arrays json

“我正在设置文件浏览器并将文件夹名称保存在数据库中。任意数量的文件夹都可以保存在数据库中,我想从保存的数据创建一个 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/

相关文章:

PHP - 使用 HTTP_REFERER 测试 iframe 的父页面是否可靠?

php - mysql_num_rows 函数在旧版本的 phpmyadmin 上返回 0

javascript - 如何将 PHP 输入文本传递给 JavaScript 并返回给 PHP 标签

PHP MYSQL 显示跟踪器,如何将剧集标记为已观看

arrays - Laravel - 将字段从数组传递到 JSON

python - 如何通过移位数组在 numpy 数组中局部移位值?

php - 无法在php中使用真实密码登录

mysql - 从 PHP 运行多个 MySQL 查询 |为什么这不起作用?

javascript - 为什么条件不执行?

java - 准备好的语句 SQL 错误