Php 用于简单输出循环的排序邻接层次结构

Php 用于简单输出循环的排序邻接层次结构,php,mysql,sorting,hierarchy,adjacency-list,Php,Mysql,Sorting,Hierarchy,Adjacency List,我正在竭尽全力避免使用多个SQL查询。有人能给我指一下正确的方向吗 最终结果是一个网站导航(ul/li)菜单,其中一些链接具有嵌套链接(下拉菜单) 数据以对象数组的形式来自PDO。我相信我的结构被称为邻接列表,其中每个记录都有一个父ID,该ID与它所嵌套的链接的ID相关,父ID=0/NULL为顶级。每个链接也有一个优先级(一个用来排序的数字) 我要求优先级仅与同一“级别”上的链接相关 要输出html,我真的需要按层次顺序的数据。我认为uasort函数可以通过自定义比较函数实现这一点,但我正在努力

我正在竭尽全力避免使用多个SQL查询。有人能给我指一下正确的方向吗

最终结果是一个网站导航(ul/li)菜单,其中一些链接具有嵌套链接(下拉菜单)

数据以对象数组的形式来自PDO。我相信我的结构被称为邻接列表,其中每个记录都有一个父ID,该ID与它所嵌套的链接的ID相关,父ID=0/NULL为顶级。每个链接也有一个优先级(一个用来排序的数字)

我要求优先级仅与同一“级别”上的链接相关

要输出html,我真的需要按层次顺序的数据。我认为uasort函数可以通过自定义比较函数实现这一点,但我正在努力使它做任何可以理解的事情。uasort甚至可以做到这一点吗

我认为可能有帮助的其他途径是自连接SQL查询,或者可能通过数组循环来构建一个对象,其中“level2”链接位于其父级的分支中(正如您在XML层次结构中所看到的)


考虑到我目前的计划只需要两个级别,而且不会有一百万条记录需要“子查询”,请告诉我您是否认为我应该让步,并使用多个查询。

正是因为这样,MPTT才得以发明。谢谢我读到过,它对邻接模型有很多好处,但对于我的需求来说似乎有些过分(考虑到我不需要任意数量的级别)。但如果这是我必须考虑的唯一方式,如果你只有几个层次,不要担心这些查询。根本不会对性能产生任何影响。特别是在缓存结果时。