Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 嵌套注释背后的算法是什么?_Php_Algorithm_Database Design_Comments - Fatal编程技术网

Php 嵌套注释背后的算法是什么?

Php 嵌套注释背后的算法是什么?,php,algorithm,database-design,comments,Php,Algorithm,Database Design,Comments,我想学习Reddit背后的注释显示算法。评论与它的孩子有什么关系?它们是如何存储在数据库中的 比方说 comment1 -comment2 --comment3 -comment4 --comment5 --comment6 ---comment7 ----comment8 comment9 如何显示comment5(位于comment4之后)和comment1之后?这个排序背后的想法是什么?以及如何在数据库中关联它们?与@Rafe Ketterr所说的差不多-注释可以有父列。但是,如果您想使

我想学习Reddit背后的注释显示算法。评论与它的孩子有什么关系?它们是如何存储在数据库中的

比方说

comment1
-comment2
--comment3
-comment4
--comment5
--comment6
---comment7
----comment8
comment9

如何显示comment5(位于comment4之后)和comment1之后?这个排序背后的想法是什么?以及如何在数据库中关联它们?

与@Rafe Ketterr所说的差不多-注释可以有父列。但是,如果您想使用更详细、更深入的算法作为实现模式,请查看。

它被称为层次结构。每个注释要么没有父注释,要么只有一个父注释。通过这种方式,您可以显示每个“顶级”注释(由于它们没有父注释),然后显示每个注释的子注释等等

对于
注释
表,数据库结构可能如下所示:

  • id
    标识单个注释的字段
  • parent\u id
    设置为父id或未设置(设置为
    NULL
    或设置为
    0
  • 已创建
    -注释创建的时间戳
  • 内容
    -实际评论内容
  • 您需要的任何其他字段

正如@Rafe所说,实际的存储非常简单,可能是:

|  id  |   name   | parent |
|  1   | comment1 |    0   |
|  2   | comment2 |    1   |
|  3   | comment3 |    2   |
|  4   | comment4 |    1   |
|  5   | comment5 |    4   |
|  6   | comment6 |    4   |
|  7   | comment7 |    6   |
|  8   | comment8 |    7   |
|  9   | comment9 |    0   |

当然,从中获取信息是(可以说)困难的部分。当然,您可以通过以下方式获取注释的子项:
SELECT*FROM table,其中parent='4'
将为您提供注释4的所有子项。但是计算孩子的数量,按等级顺序列出所有孩子会有点困难。其他答案可能会提供更多相关信息。

每条注释可能都有一个“父”列,其中包含父注释id。由于您提到了Reddit,您可能需要查看以下内容: