php - 求重组数组 有点递归的意思 难住了

查看:120
本文介绍了php - 求重组数组 有点递归的意思 难住了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

$arr = [
    ["id"=> "21",
    "pid"=>"0",
    "name"=>"轮播图管理",
    "model"=>""],
    ["id"=>"22",
    "pid"=>"21",
    "name"=>"轮播图分类",
    "model"=>""],
    ["id"=> "23",
    "pid"=>"22",
    "name"=>"轮播图分类列表",
    "model"=>"Carousel/index_"],
    ["id"=>"24",
    "pid"=>"22",
    "name"=>"添加一级分类",
    "model"=>"Carousel/add_"],
    ["id"=> "25",
    "pid"=> "0",
    "name"=>"广告管理",
    "model"=>NULL],
    ["id"=>"26",
    "pid"=>"25",
    "name"=>"广告列表",
    "model"=>"Advert/index"],
    ["id"=>"27",
    "pid"=>"25",
    "name"=>"广告添加",
    "model"=>"Advert/add"]
];



组装之后的样子:


    $arr = [
    ["id"=> "21"
    "pid"=>"0"
    "name"=>"轮播图管理"
    "model"=>""
    "content"=>
        ["id"=>"22"
        "pid"=>"21"
        "name"=>"轮播图分类"
        "model"=>""
        "content"=>
            ["id"=> "23"
            "pid"=>"22"
            "name"=>"轮播图分类列表"
            "model"=>"Carousel/index_"],
            ["id"=>"24"
            "pid"=>"22"
            "name"=>"添加一级分类"
            "model"=>"Carousel/add_"]
        ]
    ],
    ["id"=> "25"
    "pid"=> "0"
    "name"=>"广告管理"
    "model"=>NULL
    "content"=>
        ["id"=>"26"
        "pid"=>"25"
        "name"=>"广告列表"
        "model"=>"Advert/index"],
        ["id"=>"27"
        "pid"=>"25"
        "name"=>"广告添加"
        "model"=>"Advert/add"]
    ]
];

解决方案

$arr = [ ... ];
$result = [];

$arr = array_column($arr, NULL, 'id');

foreach($arr as $item) {
    if(empty($arr[$item['pid']])) {
        $result[] = &$arr[$item['id']];
    } else {
        if(empty($arr[$item['pid']]['content']))
            $arr[$item['pid']]['content'] = [];
        $arr[$item['pid']]['content'][] = &$arr[$item['id']];
    }
}

var_export($result);

输出

array ( 0 => array ( 'id' => '21', 'pid' => '0', 'name' => '轮播图管理', 'model' => '', 'content' => array ( 0 => array ( 'id' => '22', 'pid' => '21', 'name' => '轮播图分类', 'model' => '', 'content' => array ( 0 => array ( 'id' => '23', 'pid' => '22', 'name' => '轮播图分类列表', 'model' => 'Carousel/index_', ), 1 => array ( 'id' => '24', 'pid' => '22', 'name' => '添加一级分类', 'model' => 'Carousel/add_', ), ), ), ), ), 1 => array ( 'id' => '25', 'pid' => '0', 'name' => '广告管理', 'model' => NULL, 'content' => array ( 0 => array ( 'id' => '26', 'pid' => '25', 'name' => '广告列表', 'model' => 'Advert/index', ), 1 => array ( 'id' => '27', 'pid' => '25', 'name' => '广告添加', 'model' => 'Advert/add', ), ), ), )

这篇关于php - 求重组数组 有点递归的意思 难住了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆