개발 꿀팁/PHP

php가 같은 id를 병합

Jammie 2022. 11. 2. 13:31
반응형

php 필드에 따라 배열 병합, 동일한 id에 따라 배열 병합

소개하다.

사용자는 여러 개의 닉네임을 가지고 있으며, 각각의 닉네임은 하나의 레코드에 대응하며, 동일한 사용자의 닉네임 등의 정보를 하나로 통합하려고 한다.



초기 데이터 형식

$a = array(
            ['id' => 1, 'name' => 'liming' ,'nickname'=> 'aaa'],
            ['id' => 1, 'name' => 'liming' ,'nickname'=> 'bbb'],
            ['id' => 1, 'name' => 'liming' ,'nickname'=> 'ccc'],
            ['id' => 2, 'name' => 'xiaoqiang' ,'nickname'=> 'ddd'],
            ['id' => 2, 'name' => 'xiaoqiang' ,'nickname'=> 'eee'],
            ['id' => 2, 'name' => 'xiaoqiang' ,'nickname'=> 'fff'],
        );

구현하려는 형식

$b = array(
            [
                'id' => 1,
                'name' => 'liming',
                'nickname_list'=> [
                ['nickname'=> 'aaa'],
                ['nickname'=> 'bbb'],
                ['nickname'=> 'ccc'],
                ]
            ],
            [
                'id' => 1,
                'name' => 'xiaoqiang',
                'nickname_list'=> [
                ['nickname'=> 'ddd'],
                ['nickname'=> 'eee'],
                ['nickname'=> 'fff'],
            ]
            ]
 
        );

코드

$temp = [];
foreach ($aas $k => $value) {
$temp[$value['id'] = ['id' => $value['id'], 'name' => $value['name'];
$temp[$value['id']]['nickname_list'][] = $value;
}
$temp = array_values($temp); // 연관 배열에서 인덱스 배열로 변환
var_dump($temp);

 

 

반응형