php - 求重组数组 有点递归的意思 难住了
本文介绍了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屋!
查看全文