首页  >  文章  >  数据库  >  如何将数据库结果转换为多维数组来表示分层数据结构?

如何将数据库结果转换为多维数组来表示分层数据结构?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-07 16:23:03872浏览

How can I convert database results into a multidimensional array to represent a hierarchical data structure?

将数据库结果转换为数组

简介

本讨论重点是从数据库中检索分层数据结构并将其转换为多维数组单个查询。目标是获取表示数据的树结构的数组。

解决方案

为了从数据库中提取树结构,通常使用闭包表。闭包表记录了层次结构中祖先和后代之间的关系,可以高效查询后代。

SQL 查询

给定节点的主键,可以使用 SQL 查询其后代使用以下步骤:

  1. 将闭包表与主表连接以查找所有后代。
  2. 可选择连接闭包表的另一个实例以包含父信息。
  3. 根据深度参数限制要检索的级别数。
  4. 按照与根节点的距离对结果进行排序。

后处理

然后按以下方式处理 SQL 结果:

  1. 行根据其层次关系排序为子集。
  2. 每一行都转换为一个 row 对象,其中包含一个集合子行的集合。
  3. 行集类用于表示行的集合,每行都包含其子级。
  4. 结果树是通过从根节点开始并递归添加其子级来构造的。

代码示例

在 PHP 中,使用 Zend Framework,以下代码演示了该过程:

// Get taxonomy table instance
$tax = new Taxonomy();

// Fetch tree starting at Rodentia (id 180130) to a depth of 2
$tree = $tax->fetchTree(180130, 2);

// Dump the array
var_export($tree->toArrayDeep());

输出

输出是一个多维数组,表示数据的树形结构,如:

array (
  'tsn' => '180130',
  'completename' => 'Rodentia',
  '_parent' => '179925',
  '_children' => [
    // Child rows...
  ],
)

以上是如何将数据库结果转换为多维数组来表示分层数据结构?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn