php函数返回null值

时间:2013-04-11 22:17:07

标签: php recursion

我递归地在树节点中搜索其父节点,然后尝试在数组中返回其父类别。

该函数接收并传递最终返回的每个父节点的数组。

即使此数组包含元素,但在函数外部查看时返回前的语句为nul

为了使它工作,我只是通过引用制作参数。但为什么总是nul

这是我的代码:

function getParent($id,$parents){ // to work changed this to getParent($id,&$parents)

    if($id < 2) { // 1 is the Top of the Tree , so job is done
        return $string;    
    }

     $child = DB::fetchExecute((object)array( // pdo query for category to get parents
     'sql'   => "category",
     'values'=>  array($id),
     'single'=>  1,
     'debug' =>  0)
     );

    $parent = DB::fetchExecute((object)array( // pdo query for parents info
        'sql'   => "category",
        'values'=>  array($child->native_parent_category_id),
        'single'=>  1,
        'debug' =>  0)
    );
    $string[]= "<li>$parent->name ($parent->native_category_id)</li>
        ";        

    getParent($parent->native_category_id , $parents);    
}

// call function
$array = array();
$returnString = getParent($id,$string);

var_dump($returnString,$array); // will both be NULL, or if called by Reference $array has the goods

?>

2 个答案:

答案 0 :(得分:0)

变化:

function getParent($id,$parents){

要:

function getParent($id,$parents, $string){

并改变:

getParent($parent->native_category_id , $parents);

要:

getParent($parent->native_category_id , $parents, $string);

$string的范围仅在函数运行时存在 - 因此,如果重新运行该函数,它将重置其中的所有变量。每次重新运行时都需要发送变量。

答案 1 :(得分:0)

我会在函数之前声明$string,在函数内部,在顶部使用global $string;