PHP 二维数组中某些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']
        ]
    ]
];
扬帆大鱼
浏览 680回答 1
1回答

慕的地10843

$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));
打开App,查看更多内容
随时随地看视频慕课网APP