<?php
$tree = array(
1 => array(
'parent_id' => null,
'name' => 'root',
'depth' => 0,
),
11 => array(
'parent_id' => 1,
'name' => 'a',
'depth' => 1,
),
12 => array(
'parent_id' => 1,
'name' => 'b',
'depth' => 1,
),
111 => array(
'parent_id' => 11,
'name' => 'aa',
'depth' => 2,
),
2 => array(
'parent_id' => null,
'name' => 'other root',
'depth' => 0,
)
);
foreach ($tree as $key => &$sub) {
if (isset($sub['parent_id'])) {
$tree[$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 ($tree as $key => $sub) {
if (isset($sub['parent_id']))
unset($tree[$key]);
}
var_dump($tree);
preferences:
51.73 ms | 402 KiB | 5 Q