-1

私には方法があります

private function test($testArray = array(),$i=0){
        $i++;
        $testArray = array_merge($testArray, array($i));
        if($i < 10){
            $this->test($testArray, $i); //recursion
        }else{
            return $testArray;
        }
    }

別のメソッドからのように呼び出すと$x = $this->test(array(), 0);、$i の配列を作成し、$i が 10 に達したときにその配列を返すと想定されます。問題は、それが null を返すことです復帰直前。ここに私がデバッグコードに持っているものがあります

private function test($testArray = array(),$i=0){
    $i++;
    $testArray = array_merge($testArray, array($i));
    var_dump($i);
    if($i < 10){
        var_dump("Continued to $i");
        $this->test($testArray, $i);
    }else{
        var_dump("Closing on $i");
        var_dump($testArray);
        return $testArray;
    }
}

そしてここに出力があります

int 1
string 'Continued to 1' (length=14)
int 2
string 'Continued to 2' (length=14)
int 3
string 'Continued to 3' (length=14)
int 4
string 'Continued to 4' (length=14)
int 5
string 'Continued to 5' (length=14)
int 6
string 'Continued to 6' (length=14)
int 7
string 'Continued to 7' (length=14)
int 8
string 'Continued to 8' (length=14)
int 9
string 'Continued to 9' (length=14)
int 10
string 'Closing on 10' (length=13)
array (size=10)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => int 4
  4 => int 5
  5 => int 6
  6 => int 7
  7 => int 8
  8 => int 9
  9 => int 10
null

これは私を殺している

4

2 に答える 2