2017-09-12 3 views
1

私はlaravelとphpで作業していますが、再帰関数を実行しています。問題は、関数の値がechoであるということです。再帰関数の戻り値PHP laravel

コードはこれです。

public function getSitioPadre($id){ 
    $padre = md_sitio_espacios::where([['SITIO_ESPACIOS_ID','=',$id]])->get()->toArray();  
    if($padre[0]["PADRE"] == 0){ 
     return $padre[0]["SITIO_ESPACIOS_ID"]; 
    }else{ 
     $this->getSitioPadre($padre[0]["PADRE"]); 
    } 
} 

私の好きなこの関数を呼び出す:私が使用して機能している場合

echo $this->getSitioPadre(54); 

戻り、何も、

echo $padre[0]["SITIO_ESPACIOS_ID"]代わりにreturnそれが動作します。

私は何ができるのか教えてください、ありがとうございます。

+2

あなたは 'ます$ this-を返す必要のように見える> getSitioPadre($のパドレ[0] [ "PADRE"]);' –

+1

あなたが右のエラーのthats @AlonEitan、私はくぼみそれについて考えるあなたに感謝 – bjesua

答えて

3

あなたはelse節に何も返されていないようです。

public function getSitioPadre($id){ 
    $padre = md_sitio_espacios::where([['SITIO_ESPACIOS_ID','=',$id]])->get()->toArray();  
    if($padre[0]["PADRE"] == 0){ 
     return $padre[0]["SITIO_ESPACIOS_ID"]; 
    }else{ 
     return $this->getSitioPadre($padre[0]["PADRE"]); // should work better 
    } 
}