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

时间:2012-03-23 06:57:52

标签: php mysql

我正在使用递归函数从数据库中获取值,但在我的代码中,我只得到第一个记录作为返回。一切都完成后我应该把返回功能放在哪里?

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;            
}

2 个答案:

答案 0 :(得分:0)

您将sidebar_sub_sub()的结果存储在$ sb中。但是你对这个变量什么都不做。

您可以改为array_push($resultset, sidebar_sub_sub())。这样就可以返回整个递归堆栈。

答案 1 :(得分:0)

尝试下面用于我的类别表的脚本,其中只有三个字段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);