Код:
$tree = array();
foreach ($dataset as $id => &$node) {
if (($node['parent_id'] != NULL) && ($node['parent_id'] != '')) {
$tree[$node['parent_id']]['Children'][$node['id']] = &$node;
} else {
$tree[$node['id']] = &$node;
}
}
return $tree;
В итоге имея массив:
Код:
Array
(
[0] => Array
(
[id] => 3
[name] => Бег
[parent_id] =>
)
[1] => Array
(
[id] => 5
[name] => Беговые дорожки
[parent_id] => 3
)
[2] => Array
(
[id] => 4
[name] => Тяжелая атлетика
[parent_id] =>
)
[3] => Array
(
[id] => 6
[name] => Штанги
[parent_id] => 4
)
)
Получим:
Код:
Array
(
[3] => Array
(
[id] => 3
[name] => Бег
[parent_id] =>
[Children] => Array
(
[5] => Array
(
[id] => 5
[name] => Беговые дорожки
[parent_id] => 3
)
)
)
[4] => Array
(
[id] => 4
[name] => Тяжелая атлетика
[parent_id] =>
[Children] => Array
(
[6] => Array
(
[id] => 6
[name] => Штанги
[parent_id] => 4
)
)
)
)