Для получения полного доступа
зарегистрируйтесь

Фомирование дерева  


Алгоритм для формирования дерева.

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;
}

Чтобы увидеть комментарии, нужно быть участником сообщества

Регистрация