Php 递归方法

Php recursive method

我试图以递归方式检索当前类别和子类别的所有产品,但不幸的是它总是 returns 一个空数组。这是我的方法。

class Category {

    public static $products = [];

    public static function products($id) {

        array_merge(self::$products, DB::table('products')->where('category_id', $id)->get());
        $categories = DB::table('categories')->where('parent_id', $id)->get();
        foreach ($categories as $category) {
            self::products($category->id);
        }
        return self::$products;
    }   

}

执行此方法后Category::products是一个空数组。有人可以帮我找到正确的方法吗?

您需要分配 array_merge 的结果。它returns一个新数组,它不会修改参数数组。

self::$products = array_merge(self::$products, DB::table('products')->where('category_id', $id)->get());