今天项目遇到一个分类合并的问题结构如下;
$a= [
0=>[
'id' =>1,
'name'=>'技术部',
'job'=>'后台开发'
],
1=>[
'id' =>1,
'name'=>'技术部',
'job'=>'前端开发'
],
2=>[
'id' =>2,
'name'=>'设计部',
'job'=>'UI设计师'
],
3=>[
'id' =>1,
'name'=>'技术部',
'job'=>'前端开发444'
],
];
现在就是想要的结构就是这样的效果:
Array
(
[0] => Array
(
[name] => 技术部
[job] => Array
(
[0] => 后台开发
[1] => 前端开发
[2] => 前端开发444
)
)
[1] => Array
(
[name] => 设计部
[job] => Array
(
[0] => UI设计师
)
)
)
我一开始想,想把id相同的丢到一个数组中,然后在循环这个数组,取到name和job。但是发现一个问题就是,foreach用的很多,感觉方法不是好。。所以请问下大家, 有什么好的方法或者思路。
下面的我改的代码
$res = [];
foreach ($a as $k => $v) {
$res[$v['id']][] = $v;
}
foreach ($res as $key => $value) {
foreach ($value as $k2 => $v2) {
$res2[] = [
'name' =>$v2['name'],
'job' => array_column($value,'job')
];
}
}
print_r($res2);
下面的代码实际出来的效果。会有重复。。,所以最后一步还要去去重。。很麻烦
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…