<?php
$array = array(
55 => array(
'ident' => 'test 1',
'depth' => 1,
),
77 => array(
'parent_id' => 55,
'ident' => 'test 2',
'depth' => 2,
),
109 => array(
'parent_id' => 77,
'ident' => 'test 3',
'depth' => 3,
),
78 => array(
'parent_id' => 55,
'ident' => 'test 4',
'depth' => 2,
),
77 => array(
'ident' => 'test 5',
'depth' => 1,
)
);
foreach ($array as $key => &$sub) {
if (isset($sub['parent_id'])) {
$array[$sub['parent_id']]['children'][$key] = &$sub;
}
}
unset($sub); // unset the reference to make sure to not overwrite it later...
// now remove the entries with parents
foreach ($array as $key => $sub) {
if (!isset($sub['children']))
unset($array[$key]);
}
var_dump($array);
preferences:
33.13 ms | 402 KiB | 5 Q