gpt4 book ai didi

mysql - 关于分层数据的问题

转载 作者:行者123 更新时间:2023-11-29 07:14:56 26 4
gpt4 key购买 nike

我正在阅读以下文章,http://articles.sitepoint.com/article/hierarchical-data-database/2关于“在数据库中存储分层数据”。

这是在说这些结构。 http://sitepointstatic.com/graphics/sitepoint_numbering.gifhttp://sitepointstatic.com/graphics/table02.gif

我不明白下面的段落。这些是什么意思。

“每次从节点的子节点开始时,都会将该节点的正确值添加到堆栈中。”

“当你完成显示一个节点时,你从堆栈中删除它的正确值。如果你计算堆栈中的元素,你将获得当前节点的级别。”

如果可能的话,我希望有人能用更简单的方式解释这些。

To show the tree structure, children should be indented slightly more than their parent. We can do this by keeping a stack of right values. Each time you start with the children of a node, you add the right value of that node to the stack. You know that all children of that node have a right value that is less than the right value of the parent, so by comparing the right value of the current node with the last right node in the stack, you can see if you're still displaying the children of that parent. When you're finished displaying a node, you remove its right value from the stack. If you count the elements in the stack, you'll get the level of the current node.

最佳答案

他们正试图想出一种方法来使用嵌套集按树中的级别缩进数据。

Food (1,12)
|
+--Fruit (2,11)
|
+--Red (3,6)
| |
| +--Cherry (4,5)
|
+--Yellow (7,10)
|
+--Banana (8,9)

因此,当您获取行时,您将 rgt 数字压入数组的末尾:

$right[] = $row['rgt'];

这个数组随着您处理子项和子项而增长。例如,当我们到达“Cherry”时,数组看起来像这样:

array(11, 6, 5)

只要我们沿着树的一个分支下降,这里的 rgt 值应该越来越少,因为 child 的 rgt 值总是小于其父级的 rgt 值。

我们处理的下一行是“黄色”,它的 rgt 值为 10。这个值 10 大于数组中的最后一个值,这意味着我们不再沿着一个分支下降,我们在不同的分支上。我们需要从数组中弹出数字,直到 10 不再大于数组中的最后一个数字。

array(11, 6) // 10 is still greater than 6
array(11) // 10 is not greater than 11, so stop

现在我们知道该数组只包含我们当前行“黄色”的祖先。

树中的级别始终等于该数组中元素的数量。

关于mysql - 关于分层数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1949457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com