Php 从邻接模型排序非嵌套数据数组

Php 从邻接模型排序非嵌套数据数组,php,arrays,sorting,adjacency-list,adjacency-list-model,Php,Arrays,Sorting,Adjacency List,Adjacency List Model,我有一个从数据库表中获取的数据数组,该数据库表使用邻接模型来构建主题的继承关系。每条记录包含以下字段: “id”-唯一的AI id “名称”-显示名称 “parent_id”-父主题的id(对于根主题可以为null) 该数组来自未嵌套的数据库,并按照您所期望的id进行排序。“id”字段是随机的、简单的,不能用来生成有用的顺序。我正在寻找一种使用parent_id对数组进行排序的方法,以使其具有正确的邻接顺序,但不会将最终结果嵌套到子数组中。列表如下所示: RootTopicA 原子1 原子

我有一个从数据库表中获取的数据数组,该数据库表使用邻接模型来构建主题的继承关系。每条记录包含以下字段:

  • “id”-唯一的AI id
  • “名称”-显示名称
  • “parent_id”-父主题的id(对于根主题可以为null)
该数组来自未嵌套的数据库,并按照您所期望的id进行排序。“id”字段是随机的、简单的,不能用来生成有用的顺序。我正在寻找一种使用parent_id对数组进行排序的方法,以使其具有正确的邻接顺序,但不会将最终结果嵌套到子数组中。列表如下所示:

  • RootTopicA
  • 原子1
  • 原子2
  • 儿童1肥胖2
  • 儿童2肥胖2
  • 原子3
  • RootTopicB
  • BTopic1
  • BTopic2
  • 等等

任何帮助或指向示例的指针(即使使用不同的语言)都将不胜感激。

您可以添加一个字段,例如
sort
,在其中存储类别中相同ID的顺序

另一种解决方案是(在SQL中)使用连接(未测试)按父项id排序,id,或将两者结合起来,按排序排序(未测试):


假设
objects
是您的表名,同一个表是
object
作为主对象,而
parent
作为它的父对象(您需要它来获得父对象的
排序)。

不幸的是,我不认为这是我要找的。在parent_id列中应该有足够的信息来将数据排列到parent、children和sub-children中,而不需要额外的排序列。最后的顺序并不重要(可以是字母顺序,也可以是id顺序),只要每个家长都有自己的孩子在下面。理想情况下,我希望使用数组而不是查询,这样我就可以将它包装到一个类/函数中,以便在其他地方使用。如果我按父id排序,我会得到如下列表:RootTopicA、RootTopicB、Atopic1、Atopic2、Atopic3、Btopic1、Btopic2、child1ofotopic2、child2ofotopic2您的数组结构是什么?我知道,上面的列表是您想要的输出,但输入是什么?它是数据库数组中的一个记录数组(数组(id=>1,name=>RootTopicA,parent\u id=>null),数组(id=>2,name=>ATopic1,parent\u id=>1)等等。
SELECT object.id, object.sort, parent.id, parent.sort
FROM objects AS object
LEFT JOIN objects AS parent ON object.parent=parent.id
ORDER BY parent.sort, object.sort;