PHP函数调用自己构建一个数组

时间:2016-09-26 17:08:03

标签: php laravel

您好我不知道这是否可行,我正在尝试构建一个数组,但它在使用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;
  }

1 个答案:

答案 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返回到第一个父级。