如何为mlm项目创建正确的递归函数

时间:2011-09-23 07:18:21

标签: php recursion

我有来自SO的各种解决方案来创建我的第一个MLM项目,但是现在我陷入总线数(通过递归函数),因为我没有事先的想法,请任何人帮助我。

我的数据库表结构如下(表名成员):

`member_id | member_name | node_left | node_right

其中成员的关系如下:

         member_id (Id 101)
               /\
              /  \
node_left(Id 102)  node_right(Id 103)
              /\                 /\
             /  \         blank /  \blank
(again) blank   node_right (104)

......等等。以上只是一个例子

`

现在我需要计算任何成员的总下线数。例如:假设上面的例子,我想知道 member_id 101 的总下线 如何创建以有限循环结束的递归函数?

请给我任何想法..

2 个答案:

答案 0 :(得分:1)

我不确定您是否尝试在此处实施nested set model,但实施效果不正确..

使用嵌套集,表示树结构的左/右值将如下所示:

member 101 (root): left=1, right=8
member 102: left=2, right=5
member 103: left=3, right=4
member 104: left=6, right=7

然后,计算成员#101的孩子就像:

一样简单
SELECT COUNT(*) FROM member WHERE node_left > 1 AND node_right < 8

答案 1 :(得分:0)

您可以使用以下代码中的/创建自己的自定义功能,只需检查并尝试为您的案例实施。

    function Recursive_getsubcategory($parent_id,$cat_group,$intLevel)

{
        global $intLevel;


    $sql = "select *,".$intLevel." as level from tbl_name where parent_id = '".$parent_id."' ";

    $result = mysql_query($sql);
    $cat_name = $result->fetch_array_multiple();

    if(count($cat_name) > 0)
    {   
        for($k=0;$k<count($cat_name);$k++)
        { 
            $cat_group[] = array('id'=>$cat_name[$k]['sub_id'],
                                        'parent_id'=>$cat_name[$k]['parent_id'],
                                        'level' =>  $cat_name[$k]['level']

                                        );

$parent_id[] = $cat_name[$k]['parent_id'];              

//Function For Recursive Get Sub Category...
Recursive_getsubcategory($cat_name[$k]['ebay_sub_id'],$cat_group,$intLevel++);
        }

    }
    // count of total downline nodes
return count($cat_group);

}

此代码可能对您的任务有帮助。