在php中从递归函数返回值的位置
我使用递归函数从数据库中获取值,但在我的代码中,我只得到第一条记录作为返回。完成所有操作后,我应该将return to return函数放在哪里在php中从递归函数返回值的位置,php,mysql,Php,Mysql,我使用递归函数从数据库中获取值,但在我的代码中,我只得到第一条记录作为返回。完成所有操作后,我应该将return to return函数放在哪里 function sidebar_sub_sub($id) { $sql="select subcatagory_id,subcatagory_name,haschild,parent from subcatagory where parent=".$id.""; $query=mysql_query($sql); $resul
function sidebar_sub_sub($id)
{
$sql="select subcatagory_id,subcatagory_name,haschild,parent from subcatagory where parent=".$id."";
$query=mysql_query($sql);
$resultset=array();
if(mysql_num_rows($query))
{
while($result=mysql_fetch_assoc($query))
{
array_push($resultset,$result);
if($result['haschild'])
{
$sb=sidebar_sub_sub($result['subcatagory_id']);
}
}
}
return $resultset;
}
您将
侧栏的结果存储在$sb中。但是你对这个变量什么也不做
您可以使用数组推送($resultset,sidebar\u sub\u sub())
。通过这种方式,您可以返回整个递归堆栈。尝试下面的脚本,我在categories表中使用该脚本,其中只有三个字段id、name和parent_id。它可能适合您
$resultset=array();
function sidebar_sub_sub($id)
{
global $resultset;
$sql="select id,name,parent_id from categories where parent_id=".$id."";
$query=mysql_query($sql);
if(mysql_num_rows($query))
{
while($result=mysql_fetch_assoc($query))
{
array_push($resultset,$result);
if($result['parent_id']>0){
sidebar_sub_sub($result['id']);
}
}
}
return $resultset;
}
$result = sidebar_sub_sub(1);
要理解递归,首先需要理解递归!哦,相信我,你不想在递归函数或循环中发送数据库查询@RamilAmr您能为上述问题提出其他解决方案吗?