您好我不知道这是否可行,我正在尝试构建一个数组,但它在使用return时不起作用,因为它返回空白但是当我执行var转储它显示值...请在这里是代码
public function getURL($category_id,$output=null){
$getCat = ProductCategory::where("id","=",$category_id)->get();
if(count($getCat) != 0){
foreach($getCat as $cat){
$parent = $cat->category_id;
$output[] = $parent;
$this->getURL($parent,$output);
}
} else {
$finish = true;
}
if($finish){
//var_dump($output); this returns what I need
return $output;
}
}
编辑 我正在尝试构建一个url列表,在我的数据库中我有category_id来表示它的子类别。所以我试图让所有的ID回来建立网址列表
更新
感谢@Parziphal他向我展示了我的错误并为我修好了。这是他的答案。谢谢大家的支持。
public function getURL($categoryId)
{
return $this->getParentIdsRecursive($categoryId, []);
}
protected function getParentIdsRecursive($categoryId, $ids = [])
{
$category = ProductCategory::where("id", $categoryId)->first();
if ($category && $category->category_id) {
$ids[] = $category->category_id;
$ids = $this->getParentIdsRecursive($category->category_id, $ids);
}
return $ids;
}
答案 0 :(得分:0)
我还没有对此进行测试,但我不明白你要做什么,但也许这样做有效:
public function getURL($categoryId)
{
return $this->getParentIdsRecursive($categoryId, []);
}
protected function getParentIdsRecursive($categoryId, $ids = [])
{
$category = ProductCategory::where("id", $categoryId)->first();
if ($category && $category->category_id) {
$ids[] = $category->category_id;
$ids = $this->getParentIdsRecursive($category->category_id, $ids);
}
return $ids;
}
如果我(并且代码没有错误),则会将所有类别ID返回到第一个父级。