[英]php category recursive hierarchy
我有这样的类别层次结构。
0是根类别ID,我正在尝试构建一个输入叶ID为721的函数,获取721,235,201,1的完整路径ID
public function getPath($inputId = 0, $idList=array())
{
$sql ="SELECT * FROM hierarchy where id='{$inputId}'";
$result = $this->db->fetchAll($sql);
if($result){
$currentId = $result[0]["id"];
$parentId = $result[0]["parent_id"];
$idList[] = $currentId;
if ($parentId !=0){
$this->getPath($parentId, $idList);
}else{
//var_dump($idList);
return $idList;
}
}
}
我可以在上面的var_dump部分看到正确的结果,但是当我从另一个类使用这个函数时,它返回null,就像这个$ data = $ whateveHelper-> getPath('721');
有人可以帮忙吗?
谢谢
你只需要改变这个:
if ($parentId !=0){
$this->getPath($parentId, $idList);
}
对此:
if ($parentId !=0){
return $this->getPath($parentId, $idList);
}
然后你需要删除else子句并移动“return $ idList;” 行到函数的底部,因此总是返回。 上面的代码只会在$ parentId为0的情况下返回$ idList。但是,如果要以递归方式调用它,则需要该函数始终返回一些内容。
我建议您使用以下几行来完成整个功能:
public function getPath($inputId = 0, $idList=array())
{
$sql ="SELECT * FROM hierarchy where id='{$inputId}'";
$result = $this->db->fetchAll($sql);
if($result){
$currentId = $result[0]["id"];
$parentId = $result[0]["parent_id"];
$idList[] = $currentId;
if ($parentId !=0){
return $this->getPath($parentId, $idList);
}
}
return $idList;
}
如果这对您有用,请告诉我。
这条线:
$this->getPath($parentId, $idList);
需要是
return $this->getPath($parentId, $idList);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.