PHP递归——增量查询变量
我有一个数据库,其中每一行都包含一个唯一的用户ID号,以及一个将他们链接到该站点的推荐人的推荐号。我正在尝试创建一个递归函数,只要它继续查找用户,就会搜索数据库,并在运行过程中执行若干计算。下面是我到目前为止所做的-我一直在尝试创建递增查询变量-请帮助PHP递归——增量查询变量,php,mysql,recursion,Php,Mysql,Recursion,我有一个数据库,其中每一行都包含一个唯一的用户ID号,以及一个将他们链接到该站点的推荐人的推荐号。我正在尝试创建一个递归函数,只要它继续查找用户,就会搜索数据库,并在运行过程中执行若干计算。下面是我到目前为止所做的-我一直在尝试创建递增查询变量-请帮助 function findrepsloop($refidnum, $num){ echo "FINDREPSLOOP STARTED<br><br>"; if(strlen($refidnum) >
function findrepsloop($refidnum, $num){
echo "FINDREPSLOOP STARTED<br><br>";
if(strlen($refidnum) > 0){
echo "FIRST STRLEN IF LOOP PASSED: $refidnum<br><br>";
$totalreps++;
$query{$num} = "SELECT * FROM user WHERE (refidnum = '$refidnum' && active = 'YES') ";
$result{$num} = mysql_query($query{$num});
$line{$num} = mysql_fetch_array($result{$num}, MYSQL_NUM);
$total{$num} = mysql_num_rows($result{$num});
echo "QUERY $num found $total{$num} rows in the database. LINE 0: '$line{$num}[0]<br><br>";
$totaltemp = 0;
if($total{$num} > 2){ $totaltemp = $total{$num} / 3; $totaltemp = floor($totaltemp); }else{}
$numberofthrees = $numberofthrees + $totaltemp;
while(strlen($line{$num}[0]) > 0){
$refidnum = $line{$num}[0];
$num++;
findrepsloop($refidnum, $num);
$line{$num} = mysql_fetch_array($result{$num}, MYSQL_NUM);
}
}else{
}
}
您是否正在尝试获取$line数组中的所有结果?问题在于它是每个递归级别的局部。如果您希望它们都共享相同的变量,则必须通过引用传递或使用全局变量。您确实应该考虑更改数据库设计。MySQL不支持递归函数,因此它不适合这种表示分层数据的邻接列表模型。相反,请查看嵌套集和可传递闭包表模型,这两种模型都可以让您在瞬间解决此问题。”的演示文稿提供了对所有选项的极好概述。下面是手动工作的代码示例: