首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取上行线路(php)的所有mlm下行线路

获取上行线路(php)的所有mlm下行线路
EN

Stack Overflow用户
提问于 2017-06-01 09:28:56
回答 1查看 5.2K关注 0票数 1

我想在一棵二叉树里找到父亲的全部下线,每个父亲都有左右臂,每一只手臂都有左右臂等等。就像下面的图片。在我的数据库中,我有一个名为user的表,每个用户都有一个父id和位置,即L或R。

这是我的功能..。但它仍然没有全部下线。就像下面的图片

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-01 10:20:15

在我看来,有两件事是很突出的:

  1. $i参数和$this->downline_id_arr的使用。

考虑做:

代码语言:javascript
复制
$children = array();
foreach($data as $row) {
    $child_id = $row->id;
    $children[$child_id] = array(/**/);
    $children = array_merge($children, $this->getAllDownline($child_id);
}
return $childen;

现在您不需要$i变量或$this->downline_id_arr

  1. 你是一个接一个地查询每个节点。

考虑按级别查询,而不是:

代码语言:javascript
复制
function getAllDownlines($fathers) {
    $data = "SELECT * FROM users WHERE father_id IN (/*fathers*/)";
    $new_father_ids = array();
    $children = array();
    foreach ($data as $child) {
        $children[$child->id] = array(/**/); // etc

        $new_father_ids[] = $child->id;
    }
    $children = array_merge($children, $this->getAllDownlines($new_father_ids);
    return $childen;
}

通常,较少的查询速度更快,因此您应该可以看到更好的性能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44303705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档