Вызов функции внутри функции в контроллере

#php #functional-programming

#php #функциональное программирование

Вопрос:

Пытался вызвать функцию внутри функции.

Он не возвращает значение из второй функции.

Когда цикл прерывается, функция возвращает значение, но не возвращает значение массива.

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

Комментарии:

1. И ваш вопрос…

Ответ №1:

Обновить

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

Удачи 🙂

Комментарии:

1. спасибо, я включил возвращаемое значение, но все еще не могу получить

2. Можете ли вы показать мне, что у вас есть в массиве результатов?

Ответ №2:

потому что вы не возвращаете никакого значения из второй функции. вы просто присваиваете свое значение новой переменной. используйте return $parentarray; вместо $returnvalue=$parentarray; в вашей второй функции.

Комментарии:

1. Я включил возвращаемое значение после прерывания цикла while, но все еще не могу получить значение

2. сначала определите цикл $returnvalue перед циклом while. поэтому попробуйте добавить $returnvalue = array(); перед циклом while.

Ответ №3:

Вы вызываете метод экземпляра со статическим понятием.

Измените все вхождения self::getparents на $this->getparents .

Кстати, почему functional-programming тег? Это не имеет никакого отношения к этой теме.