php 无限级二维数组分类生成树形数据

 PHP基础  2022-11-23  admin  663  895

/**
 * 无限级二维数组分类生成树形数据
 * @param $menusList
 * @param int $pid
 * @param array $navList
 * @return array
 */
function array2Tree($arr, $pid = 0)
{
    $tree = [];
    foreach ($arr as $key => $val) {
        if ($val['pid'] == $pid) {
            unset($arr[$key]);
            $val['children'] = array2Tree($arr, $val['id']);
            if ($val['children']) {
                $val['expand'] = true;
            }
            $tree[] = $val;
        }
    }
    return $tree;
}

测试:


$data = [
    [
        'id' => '1',
        'pid' => '0',
        'name' => '广东'
    ],
    [
        'id' => '2',
        'pid' => '1',
        'name' => '深圳'
    ],
    [
        'id' => '3',
        'pid' => '2',
        'name' => '宝安区'
    ],
    [
        'id' => '4',
        'pid' => '2',
        'name' => '南山区'
    ],
    [
        'id' => '10',
        'pid' => '0',
        'name' => '浙江'
    ],

];

print_r(array2Tree($data));
Array
(
    [0] => Array
        (
            [id] => 1
            [pid] => 0
            [name] => 广东
            [children] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [pid] => 1
                            [name] => 深圳
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [id] => 3
                                            [pid] => 2
                                            [name] => 宝安区
                                            [children] => Array
                                                (
                                                )

                                        )

                                    [1] => Array
                                        (
                                            [id] => 4
                                            [pid] => 2
                                            [name] => 南山区
                                            [children] => Array
                                                (
                                                )

                                        )

                                )

                            [expand] => 1
                        )

                )

            [expand] => 1
        )

    [1] => Array
        (
            [id] => 10
            [pid] => 0
            [name] => 浙江
            [children] => Array
                (
                )

        )

)


如果文章对您有帮助,点击下方的广告,支持一下作者吧!

相关推荐


酷炫的倒计时客户端

QQ: 425100867捐赠开发者:

go 的加减乘除运算注意事项,及相互转化问题

packagemain import( "fmt" ) funcmain(){ varintAint=10 varintBint=9 varfloatAfloat64=10 varfloatBfloat64=9 //在Go语言中,操作数的类型必须匹配。也就是说,进行运算时,操作数的类型必须一致或能够进行合理的转换。 //具体来说

AI人脸替换工具离线版V6.0 最新版下载

AI人脸替换工具离线版V6.0 最新版下载下载 解压 双击运行roop_rope_facefusion_V60.exe 文件即可下载链接:https://pan.quark.cn/s/be7953632126AI人脸替换工具离线版V6.0

Android各个版本与API等级之间的对应关系

API等级 1 - 3:Android 1.0 (Astro,也被称为“铁臂阿童木”)Android 1.1 (Petit Four,即“花色小蛋糕”)Android 1.5 (Cupcake)API等级 4:Android 1.6 (Donut)API等级 5 - 7:Android 2.0/2.0.1/2.1 (Éclair)API等级 8:Android 2.2/2.2.3 (Froyo)A