我一直在研究MLM(多层次营销)应用程序。 下面是我在初始阶段编写并正常工作的递归函数的代码片段(不是整个代码)。但现在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;
}
?>
注意:请记住我的原始代码太大了,但我一直在粘贴逻辑的重要方面。
如果我找到替代解决方案,对我来说将是一个很大的帮助。
提前致谢!
答案 0 :(得分:1)
你有多深?
这一天在你的sql数据库中创建了一个mutliway树。树是递归结构,递归代码是自然适合的。
你可以使用我称之为准记忆化的东西。
如果您在DB结构中列出了子项,这应该很容易。对没有childrin的所有用户进行结果,将其值记忆到散列或树中,其中键是用户ID和值1.然后只是对每个用户(或只是memiozed条目的父项)进行质量迭代,如果有为所有孩子记忆的值,将它们加在一起并记住那个值。重复迭代,直到找到根(没有父级的用户)
如果你没有孩子的记录,那可能非常低效。