Не догоняю как решить это Задание: PHP: $test = [ ['id' => 1, 'name' => 'test1', 'docId' => 1], ['id' => 1, 'name' => 'test1', 'docId' => 3], ['id' => 2, 'name' => 'test2', 'docId' => 4], ['id' => 2, 'name' => 'test2', 'docId' => 6], ['id' => 3, 'name' => 'test3', 'docId' => 2] ]; Результат: PHP: $result = [ [ 'id' => 1, 'name' => 'test1', 'docId' => [1,3] ], [ 'id' => 2, 'name' => 'test2', 'docId' => [4,6] ], [ 'id' => 3, 'name' => 'test3', 'docId' => [2] ], ];
Добрый день! В Вашем конкретном случае (данные в массиве $test отсотированы ) можно сделать так PHP: foreach($test as $row){ $id = $row['id']; $buf[$id]['id'] = $id; $buf[$id]['name'] = $row['name']; $buf[$id]['docId'][] = $row['docId']; } $result = []; foreach($buf as $row) $result[] = $row; Если массив $test будет, например, такой PHP: $test = [ ['id' => 2, 'name' => 'test2', 'docId' => 6], ['id' => 3, 'name' => 'test3', 'docId' => 2], ['id' => 1, 'name' => 'test1', 'docId' => 1], ['id' => 2, 'name' => 'test2', 'docId' => 4], ['id' => 1, 'name' => 'test1', 'docId' => 3] ]; то можно сделать так PHP: foreach($test as $row){ $id = $row['id']; $buf[$id]['name'][] = $row['name']; $buf[$id]['docId'][] = $row['docId']; } ksort($buf); $result = []; foreach($buf as $id => $row){ foreach($row as $k => $v){ $row[$k] = array_unique($v); sort($row[$k]); } $result[] = array_merge(['id'=> $id], $row); } В обоих случаях Вы получите требуемый результат PHP: $result Array ( [0] => Array ( [id] => 1 [name] => test1 [docId] => Array ( [0] => 1 [1] => 3 ) ) [1] => Array ( [id] => 2 [name] => test2 [docId] => Array ( [0] => 4 [1] => 6 ) ) [2] => Array ( [id] => 3 [name] => test3 [docId] => Array ( [0] => 2 ) ) ) Удачи!