2016-10-07 52 views
1

関数内で関数を呼び出そうとしました。コントローラ内の関数内で関数を呼び出す

2番目の関数から値を返しません。

whileループが壊れた場合、関数は値を返しますが、配列の値は返しません。

<?php 
function getdetails() 
{ 
    $parentarray=array(); 
    $parentsid=2; 
    array_push($parentarray,$parentsid); 
    $getallparents=self::getparents($parentarray,$parentsid); 
} 

function getparents($parentarray,$parentsid) 
{ 
    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->where('user_id',$parentsid); 
    $query = $this->db->get(); 
    $results = $query->result(); 
    $parentsid=$results[0]->parent_id; 
    $var="true"; 
    while ($var=="true") { 
     array_push($parentarray,$results); 

     if($parentsid==0) 
     { 
      $var="false"; 
      $returnvalue=$parentarray; 
     } 
     else 
     { 
      $var="true"; 
      self::getparents($parentarray,$parentsid); 
     } 
    } 
return $returnvalue; 
} 
?> 
+0

あなたの質問は... –

答えて

0

更新

$returnvalue=$parentarray; 

return $parentarray; 

で最終的なコードは次のようになります。

function getparents($parentarray, $parentsid) 
    { 
     $this->db->select('*'); 
     $this->db->from('users'); 
     $this->db->where('user_id', $parentsid); 
     $query = $this->db->get(); 
     $results = $query->result(); 
     $parentsid = $results[0]->parent_id; 
     $var = true; 
     while ($var == true) { 
      array_push($parentarray, $results); 

      if ($parentsid == 0) { 
       $var = false; 
       return $parentarray; 
      } else { 
       $var = true; 
       self::getparents($parentarray, $parentsid); 
      } 
     } 
    } 

幸運:)

+0

私は戻り値を含めてくれてありがとうまだありません –

+0

あなたは結果配列に何を持っているのか私に教えてもらえますか? –

0

あなたは第二の機能から任意の値を返すされていないため。新しい変数に値を割り当てるだけです。 2番目の機能で$returnvalue=$parentarray;の代わりにreturn $parentarray;を使用してください。

+0

whileループのブレーク後に戻り値をインクルードしましたが、まだ値を取得できません –

+0

whileループの前に '$ returnvalue'を定義してください。 whileループの前に '$ returnvalue = array();'を追加してみてください。 –

0

静的な概念を持つインスタンスメソッドを呼び出しています。

self::getparentsをすべて$this->getparentsに変更してください。

ところで、なぜfunctional-programmingタグですか?それはその話題とは関係がありません。

関連する問題