<?php
$array = [
[
'parent' => 'Basic',
'parentId' => 1,
'child' => 'Birthday',
'childId' => 2,
],
[
'parent' => 'Basic',
'parentId' => 1,
'child' => 'Gender',
'childId' => 3,
],
[
'parent' => 'Geo',
'parentId' => 10,
'child' => 'Current City',
'childId' => 11,
],
[
'parent' => 'Known me',
'parentId' => 5,
'child' => 'My personality',
'childId' => 7,
],
[
'parent' => 'Known me',
'parentId' => 5,
'child' => 'Best life moment',
'childId' => 8,
],
];
$result = [];
foreach ($array as $row) {
if (!isset($result[$row['parentId']])) {
unset($row['childId']);
$row['child'] = (array) $row['child'];
$result[$row['parentId']] = $row;
} else {
$result[$row['parentId']]['child'][] = $row['child'];
}
}
var_export(array_values($result));
preferences:
23.61 ms | 405 KiB | 5 Q