您当前的位置: 首页 >  php

彭世瑜

暂无认证

  • 1浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

彭世瑜 发布时间:2021-06-03 09:57:24 ,浏览量:1

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

$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

关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.0689s