Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中从递归函数返回值的位置_Php_Mysql - Fatal编程技术网

在php中从递归函数返回值的位置

在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

我使用递归函数从数据库中获取值,但在我的代码中,我只得到第一条记录作为返回。完成所有操作后,我应该将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);
    $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您能为上述问题提出其他解决方案吗?