PHP 二维数组中合并某些相同key,不同key重新组成新的数组

如何将 $arr 数组变成 $newArr 的结构

$arr = [
[
'id' => '1',
'name' => 'a',
'attr' => '红色',
'val' => '10'
],
[
'id' => '1',
'name' => 'a',
'attr' => '蓝色',
'val' => '11'
],
[
'id' => '2',
'name' => 'b',
'attr' => '绿色',
'val' => '12'
],
[
'id' => '2',
'name' => 'b',
'attr' => '黄色',
'val' => '13'
],
];
要变成的数组结构:
$arr = [
[
'id' => '1',
'name' => 'a',
'info' => [
['attr' => '红色', 'val' => '10']
['attr' => '蓝色', 'val' => '11']
]
],
[
'id' => '2',
'name' => 'b',
'info' => [
['attr' => '绿色', 'val' => '12']
['attr' => '绿色', 'val' => '13']
]
]
];

某杰
编辑于2018-04-25
评论 (0)链接2018-04-25 

$data = [];
array_map(function($key) use (&$data){
if (!isset($data[$key['id']])) {
$data[$key['id']] = [
'id' => $key['id'],
'name' => $key['name'],
];
}
$data[$key['id']]['info'][] = [
'attr' => $key['attr'],
'val' => $key['val'],
];
}, $arr);
print_r(array_values($data));

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2018-04-25
德问是一个专业的编程问答社区,请 登录注册 后再提交答案