PHP:将list列表转为tree树形数据

简介: PHP:将list列表转为tree树形数据

采用递归将数据列表转换成树


$list = [
    ["id" => 1, "name" => "头条", "parent_id" => 0],
    ["id" => 2, "name" => "快讯", "parent_id" => 0],
    ["id" => 3, "name" => "情感", "parent_id" => 2],
    ["id" => 4, "name" => "成人", "parent_id" => 3]
];


/**
 * 采用递归将数据列表转换成树
 *
 * @param $dataArr           数据列表
 * @param int $rootId        根节点ID
 * @param string $pkName     主键名
 * @param string $pIdName    父节点id名
 * @param string $childName  子节点名称
 * @return array
 */
function ListToTreeRecursive($dataArr, $rootId = 0, $pkName = 'id', $pIdName = 'parent_id', $childName = 'children')
{
    $arr = [];
    foreach ($dataArr as $sorData) {
        if ($sorData[$pIdName] == $rootId) {
            $children = ListToTreeRecursive($dataArr, $sorData[$pkName]);
            if($children){
                $sorData[$childName] = $children;
            }
            $arr[] = $sorData;
        }
    }
    return $arr;
}
$tree = ListToTreeRecursive($list);
echo json_encode($tree, JSON_UNESCAPED_UNICODE);
[
    {
        "id":1,
        "name":"头条",
        "parent_id":0
    },
    {
        "id":2,
        "name":"快讯",
        "parent_id":0,
        "children":[
            {
                "id":3,
                "name":"情感",
                "parent_id":2,
                "children":[
                    {
                        "id":4,
                        "name":"成人",
                        "parent_id":3
                    }
                ]
            }
        ]
    }
]

参考

PHP List数据集/数组转换成树状结构Tree

相关文章
|
1天前
|
索引 Python
List(列表)
List(列表)。
9 4
|
4天前
|
关系型数据库 MySQL 数据库连接
13 PHP数据的获取
路老师在知乎上分享了PHP语言的知识,帮助大家入门和深入理解PHP。本文介绍了从结果集中获取一行数据作为对象(`mysqli_fetch_object()`)、获取一行作为枚举数组(`mysqli_fetch_row()`)、获取查询结果集中的记录数(`mysqli_num_rows()`)、释放内存(`mysqli_free_result()`)以及关闭数据库连接(`mysqli_close()`)的方法,并提供了具体示例代码。
12 3
|
29天前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
12天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
15天前
|
JavaScript 数据管理 虚拟化
ArkTS List组件基础:掌握列表渲染与动态数据管理
在HarmonyOS应用开发中,ArkTS的List组件是构建动态列表视图的核心。本文深入探讨了List组件的基础,包括数据展示、性能优化和用户交互,以及如何在实际开发中应用这些知识,提升开发效率和应用性能。通过定义数据源、渲染列表项和动态数据管理,结合虚拟化列表和条件渲染等技术,帮助开发者构建高效、响应式的用户界面。
146 2
|
24天前
|
NoSQL 关系型数据库 MySQL
Redis 列表(List)
10月更文挑战第16天
16 2
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)
|
1月前
|
JavaScript
DOM 节点列表长度(Node List Length)
DOM 节点列表长度(Node List Length)