1

我一直致力于 MLM(多层次营销)应用程序。下面是我在初始阶段编写并正常工作的递归函数的代码片段(不是整个代码)。但是现在传销树太深了,递归函数停止了。它说超出了最大嵌套级别。我几次增加了嵌套函数调用级别,但现在我不想进一步增加它,因为我知道这不是正确的解决方案。

谁能为此向我建议一个替代代码(可能是迭代的)?

<?php
function findallpairs($username, $totalusers= 0)
{
$sql = "select username,package_id from tbl_user where 
    parent_id = '".$username."'      order by username";
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0)
{       
    while($row = mysql_fetch_array($result))
    {           
        $username = $row["username"];
        $totalusers++;

        $arrtmp = findallpairs($username, $totalusers);
        $totalusers = $arrtmp["totalusers"];
    }
}

$arrpoints["totalusers"] = $totalusers;

return $arrpoints;
}
?>

注意:请记住我的原始代码太大,但我在这里只粘贴了逻辑的重要方面。

如果我找到替代解决方案,这对我来说将是一个很大的帮助。

提前致谢!

4

1 回答 1

1

你要去多深?

这一天在您的 sql 数据库中创建了一个多路树。树是递归结构,递归代码自然适合。

您也许可以使用我所说的准记忆。

如果您在 DB 结构中列出了孩子,这应该很容易。为所有没有孩子的用户获取结果,将他们的值记忆到哈希或树中,键为用户 ID,值为 1。然后只需对每个用户(或记忆条目的父母)进行大规模迭代,如果它有为其所有孩子记忆的值,将它们加在一起并记忆该值。重复迭代直到找到根(没有父级的用户)

如果您没有孩子的记录,那可能会非常低效。

于 2013-09-04T01:10:07.683 回答