是否可以从已知节点路径创建嵌套数组?(PHP和SQL Server)

是否可以从已知节点路径创建嵌套数组?(PHP和SQL Server),php,sql-server,database,algorithm,Php,Sql Server,Database,Algorithm,这个问题可能是愚蠢的琐碎,但经过数小时的不成功的研究(也许此时我的头脑已经融化,我无法理解一个$a=1分配),我感到不得不寻求帮助 我正试图找出如何构建嵌套数组(构建可导航树),因为存储过程的结果如下: ----------------------------------------------------------------------------- | RegionID | CountryID | CityID | StoreID | RegionName Country

这个问题可能是愚蠢的琐碎,但经过数小时的不成功的研究(也许此时我的头脑已经融化,我无法理解一个
$a=1
分配),我感到不得不寻求帮助

我正试图找出如何构建嵌套数组(构建可导航树),因为存储过程的结果如下:

----------------------------------------------------------------------------- | RegionID | CountryID | CityID | StoreID | RegionName Country Name | |--------------------------------------------------------------------------- | 1 | 1 | 1 | 1 | Europe Albania | | 1 | 1 | 2 | 2 | Europe Albania | | 1 | 2 | 3 | 3 | Europe Andorra | | 2 | 3 | 4 | 4 | North America Canada | | ... | ... | ... | ... | | ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- |RegionID | CountryID | CityID | StoreID | RegionName国家名称| |--------------------------------------------------------------------------- |1 | 1 | 1 | 1 |欧洲阿尔巴尼亚| |1 | 1 | 2 | 2 |欧洲阿尔巴尼亚| |1 | 2 | 3 | 3 |欧洲安道尔| |2 | 3 | 4 | 4 |北美加拿大| | ... | ... | ... | ... | | ----------------------------------------------------------------------------- 这样的数组将遵循以下层次结构:

地区>国家>城市>商店

我的第一种方法是通过对存储所有不同等价ID的不同表进行递归查询(例如,获取给定RegionID的所有CountryID等),填充嵌套数组并最终构建
结构来构建此结构

但我无法猜测的是,我是否可以从一个类似上面的单个查询开始构建这个层次结构,将ID(以“-”分隔)连接起来,作为从根(RegionID)到最后一片叶子(StoreID)的路径。 然后,我将以HTML格式呈现数组,如下所示:

<ul>
<li><a href="#" data-node="1-1">Albania</a></li>
<li>
   <ul> 
   <li><a href="#" data-node="1-1-1">Tirana</a></li>
   <li>
      <ul> 
      <li><a href="#" data-node="1-1-1-1">Store #1</a></li>
      </ul>
   </li>
   </ul>
</li>
</ul> 
除了预期的代码行之外,还有几个问题:

  • 这种方法错了吗?天真?效率低下?完全没有意义?
  • 存储过程的这种结果是构建嵌套结构的最合适起点吗
  • 这个数据库是否遵循一个明显的邻接列表结构,而我却完全忽略了它
  • 对于非工程专业的本科生来说,了解基本数据结构和算法有什么推荐的阅读资料吗?(这是我认为我缺少的)
  • 我只是把一件简单的事情复杂化了

  • 非常感谢,

    您是否尝试过使用递归函数将这些数据转换为HTML树?我敢肯定,这是相对简单的眼睛,这可能是我正在寻找的。我只是想知道,从我的出发点来看,这是否是最有效的方法。我认为它是:对数据集的单个查询+一个空间和时间复杂度都为O(N)的算法。。。没有比这更优化的方法了。谢谢Andrea为我指路。最后,我已经能够使用递归函数构建树,但是我必须首先将数据准备到不同的数组中。明天我会发布我尝试过的方法,尽管我仍然认为这不是最好的方法。