2016-10-07 1 views
1

Versucht, eine Funktion in einer Funktion aufzurufen.Aufruf der Funktion innerhalb einer Funktion im Controller

Es gibt keinen Wert von der zweiten Funktion zurück.

Wenn die while-Schleife unterbrochen wird, gibt die Funktion einen Wert zurück, gibt aber keinen Array-Wert zurück.

<?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

Und Ihre Frage ist ... –

Antwort

0

aktualisieren

$returnvalue=$parentarray; 

Mit

return $parentarray; 

Schluss Code sieht wie folgt aus.

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); 
      } 
     } 
    } 

Viel Glück :)

+0

danke ich habe den Rückgabewert enthalten, aber immer noch nicht –

+0

Kannst du mir zeigen, was du hast in Ergebnis-Array? –

0

, weil Sie keinen Wert aus der zweiten Funktion zurückkehrt. Sie weisen Ihren Wert nur einer neuen Variablen zu. Verwenden Sie return $parentarray; anstelle von $returnvalue=$parentarray; in Ihrer zweiten Funktion.

+0

Ich habe den Rückgabewert nach der While-Schleife eingefügt, aber kann immer noch nicht den Wert –

+0

vor der While-Schleife den '$ returnvalue' definieren. Versuchen Sie daher, '$ returnvalue = array();' vor der while-Schleife hinzuzufügen. –

0

Sie rufen eine Instanzmethode mit statischer Bezeichnung auf.

Alle Vorkommen von self::getparents zu $this->getparents ändern.

BTW, warum der functional-programming Umbau? Es hat nichts mit diesem Thema zu tun.

Verwandte Themen