当前位置:Gxlcms > PHP教程 > 无限级分类问题

无限级分类问题

时间:2021-07-01 10:21:17 帮助过:15人阅读

无限级分类 我现在知道最底部节点 也就是知道

用一个方法找出所有的父节点!谢谢

回复内容:

无限级分类 我现在知道最底部节点 也就是知道

用一个方法找出所有的父节点!谢谢

  1. 如果你问的是如何用一句 SQL 语句来找出所有的父节点的话,join 可能可以实现,但是不建议用数据库实现。一是尽量减小粒度(虽然实践表明绝大多数的减小粒度都是无用功),使其便于修改;二是这样会给数据库造成较大压力,使流程处理时间大幅增加,数据库不擅长逻辑处理,更擅长简单的取。

  2. 如果你问的是如何在一个方法中取出,高级语言有一个普遍的语法特性,叫 递归,说白了就是自己调用自己。
    我们来构思一下实现方式(php语言为例):

$father = "";

public function get_all_father($son_of_son) {

    global $father;
    if (找他爹($son_of_son)) {

        $他爹 = 找他爹($son_of_son);
        $father = $father.'.'.$他爹; //以 . 隔开一层一层的father
        get_all_father($他爹);
    }

    return $father.'.'.$son_of_son;
}

public function 找他爹($儿子) {

    if (在数据库里找到($儿子)的爹了) {
        return 他爹;
    } else {
        return FALSE;
    }
}

//特别声明,除了那一句 “在数据库里找到($儿子)的爹了” 和 “return 他爹;” 是我简写了以外,其他代码都是可以运行的,没错,汉字也行,以utf-8编码保存就行。

这只是一个思路,离实际能在symfony里运行的代码还有很大差距。当然这是在两个function里实现的,你可以把下面那个function缩成一行放在上面的里面......

按存储结构不同,这个要看你的表格结构,不能靠猜的。

常见的有,链表式的必须递归回溯,左右值式的所有超集并按左值排序。

人气教程排行