尝试在 PHP 中获取线程/嵌套注释

发布于 2024-11-16 21:33:20 字数 430 浏览 0 评论 0原文

我在 MySQL 表中有数据(称为 info),如下所示:

_______________________
id  |  text  | parent |
1   | a      | NULL   |
2   | b      | 1      |
3   | c      | 1      |
4   | d      | 2      |
-----------------------

(id 自动递增)

我想在 PHP 中显示此数据,如下所示:

>a (ID 1)
>>b(ID 2)
>>>d (ID 4, parent 2) 
>>c (ID 3)

我尝试了不同的方法,但我似乎无法让他们以任何一种方式工作。我知道我需要一个递归函数,但我该怎么做呢?一个简单的指针就足够了;谢谢。

I have data in a MySQL table, (called info), like this:

_______________________
id  |  text  | parent |
1   | a      | NULL   |
2   | b      | 1      |
3   | c      | 1      |
4   | d      | 2      |
-----------------------

(id is auto incrementing)

I want to display this data in PHP, like this:

>a (ID 1)
>>b(ID 2)
>>>d (ID 4, parent 2) 
>>c (ID 3)

I have attempted different methods, but I can't seem to be able to get them to work either way. I know I need a recursive function, but how would I do this? A simple pointer would be enough; thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绝對不後悔。 2024-11-23 21:33:20

正如您得到的表:

$parents = array();
$children = array();
while($row = ...){
    if($row['parent'] == null){
         $parents[] = array ('id' => $row['id'], 'text' => $row['text']) 
    }
    else{
         if(!isset($children[$row['parent']])) $children[$row['parent']] = array();
         $children[$row['parent']][] = array ('id' => $row['id'], 'text' => $row['text']) 
    }
}

使用此函数迭代:

function displayChildren($array, $id, $char = ">"){
   foreach($array as $ch){
        if($ch['id']  == $id)
           echo "$char {$ch['text']} (ID {$ch['id']})"
   }
}

Well as you are getting the table:

$parents = array();
$children = array();
while($row = ...){
    if($row['parent'] == null){
         $parents[] = array ('id' => $row['id'], 'text' => $row['text']) 
    }
    else{
         if(!isset($children[$row['parent']])) $children[$row['parent']] = array();
         $children[$row['parent']][] = array ('id' => $row['id'], 'text' => $row['text']) 
    }
}

Iterate using this function:

function displayChildren($array, $id, $char = ">"){
   foreach($array as $ch){
        if($ch['id']  == $id)
           echo "$char {$ch['text']} (ID {$ch['id']})"
   }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文