php递归函数在结束前返回

时间:2017-02-13 20:51:36

标签: php recursion

我有以下递归功能:

private function myRecursiveFunction()
{
  $results = [];
  //stuff related to $results
  ...
  if(!$done){
     .....
     $this->myRecursiveFunction();
    }
  return $results;
}

当我在var_dump($results)内部执行函数时,我得到了所有数组结果

但是当我从另一个函数调用该函数时,我将只得到$results数组中的第一个元素。

public function myFunction()
{
 $results = $this->myRecursiveFunction();
}

1 个答案:

答案 0 :(得分:4)

我不是100%肯定你想在这里完成什么,但递归功能通常会发送他们的工作量"一直到最里面的功能,然后结果是"添加"在回来的路上彼此相处。如果这确实是您想要的,您可能需要将代码更改为以下内容:

private function myRecursiveFunction()
{
  $results = [];
  //stuff related to $results
  ...
  if(!$done){
     .....
     // Add the computed results of the recursive call to our data stack
     $results[] = $this->myRecursiveFunction();
    }
  // Return the entire result array
  return $results;
}