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

相关文章
|
JSON 数据处理 PHP
PHP数组处理技巧:高效操作数据集合
PHP数组处理技巧:高效操作数据集合
|
JSON 安全 大数据
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
343 67
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList<>()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
1050 1
Java 中数组Array和列表List的转换
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
本文分析了YashanDB中PHP通过ODBC查询数据时出现的数据截断问题,表现为超过256字节的数据被截断,以及isql工具无法显示超过300字节长度的数据。问题根源在于YashanDB的ODBC驱动仅支持单次查询,且PHP扩展库默认缓冲区限制。解决方案包括改用PHP ODBC扩展库而非PDO_ODBC,以及调整isql代码逻辑以支持循环取数或一次性读取完整数据。文章还提供了具体代码示例和规避方法,适用于23.2.4.14及更早版本。
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
|
Oracle 关系型数据库 MySQL
【YashanDB 知识库】php 查询超过 256 长度字符串,数据被截断的问题
php 查询超过 256 字节数据,显示被截断:yashandb 的 odbc 驱动接口 SQLGetData 现在只支持单次查询,不支持多次取数据的操作。 isql 显示不出来,isql 工具最大只查询 300 长度的数据,超过了该长度未正常显示。
|
PHP
PHP:变量类型获取和数据类型转换
PHP:变量类型获取和数据类型转换
222 0
|
存储 自然语言处理 JavaScript
PHP变量和数据类型
1.静态类型语言,比如:C/Java等,在静态语言类型中,类型的检查是在编译期(compile-time)确定的。 2. 动态语言类型,比如:PHP,python等各种脚本语言,这类语言中的类型是在运行时确定的。 3. 无类型语言,比如:汇编语言,汇编语言操作的是底层存储,他们对类型毫无感知。
PHP变量和数据类型

热门文章

最新文章