<?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));
- Output for 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
- array (
0 =>
array (
'parent' => 'Basic',
'parentId' => 1,
'child' =>
array (
0 => 'Birthday',
1 => 'Gender',
),
),
1 =>
array (
'parent' => 'Geo',
'parentId' => 10,
'child' =>
array (
0 => 'Current City',
),
),
2 =>
array (
'parent' => 'Known me',
'parentId' => 5,
'child' =>
array (
0 => 'My personality',
1 => 'Best life moment',
),
),
)
preferences:
69.63 ms | 407 KiB | 5 Q