使用单一查询的递归类别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (52)

我有一个包含文章和章节的网站,每个部分都可以有一个父部分,例如:

subject 1
 -subject 2 
 --subject 3
 -subject 4
 --subject 5
 --subject 6
 ---subject 7
subject 8
subject 9

现在,我想递归地获取它们,通过php和MySQL最有效的方法是什么?

提问于
用户回答回答于

如果树不太大,可以使用一些巧妙的引用在PHP中构建树。

$nodeList = array();
$tree     = array();

$query = mysql_query("SELECT category_id, name, parent FROM categories ORDER BY parent");
while($row = mysql_fetch_assoc($query)){
    $nodeList[$row['category_id']] = array_merge($row, array('children' => array()));
}
mysql_free_result($query);

foreach ($nodeList as $nodeId => &$node) {
    if (!$node['parent'] || !array_key_exists($node['parent'], $nodeList)) {
        $tree[] = &$node;
    } else {
        $nodeList[$node['parent']]['children'][] = &$node;
    }
}
unset($node);
unset($nodeList);

这将为提供树结构$tree和孩子们在一起children-插槽。

用户回答回答于

扫码关注云+社区

领取腾讯云代金券