如何将 $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']
]
]
];
1 回答
![?](http://img1.sycdn.imooc.com/5333a1a90001c8d802000200-100-100.jpg)
慕的地10843
TA贡献1785条经验 获得超8个赞
$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));
- 1 回答
- 0 关注
- 679 浏览
添加回答
举报
0/150
提交
取消