PHP递归函数得到错误异常

问题描述

我想做一个递归函数,该函数调用自身, 我有 public function test(Request $request){} 在那个函数内部我调用了自己

public function test(Request $request){
  //data
  $data // this variable is have the same format as $request,but with fewer data
  if (count($data>0){
    test($data);
  }
}

但它返回

Argument 1 passed to App\\Http\\Controllers\\Api\\Controller::test() must be an instance of Illuminate\\Http\\Request,array given,called in C:\\xampp\\htdocs\\FIX\\test\\app\\Http\\Controllers\\Api\\Controller.PHP on line 891",

解决方法

您可以将新数据与旧请求合并,然后递归地将请求再次传递给函数。

public function test(Request $request){

  if (count($data>0){
    $request->merge($data);
    test($request);
  }
}

通过这样做,您的新数据将被传递给函数。

,

我建议这样

public function test(Request $request,array $data = []){
  if (!empty($data) {
    $this->test($request,$data);
  }
}