Алгоритм для формирования дерева.
private function buildTree($data)
{
$tree = [];
$references = [];
foreach ($data as $id => &$node) {
//FIX: Дерево строится не корректно (происходит замена уже ранее созданного и удаления всех "детей"),
//если за ранее не отсортировано по ключу 'parent_id'
$node['children'] = isset($references[$node['id']]['children']) ? $references[$node['id']]['children'] : [];
$references[$node['id']] = &$node;
if (is_null($node['parent_id'])) {
$tree[] = &$node;
} else {
$references[$node['parent_id']]['children'][] = &$node;
}
}
return $tree;
}
Чтобы увидеть комментарии, нужно быть участником сообщества
Регистрация