我递归地在树节点中搜索其父节点,然后尝试在数组中返回其父类别。
该函数接收并传递最终返回的每个父节点的数组。
即使此数组包含元素,但在函数外部查看时返回前的语句为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
?>
答案 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;
。