Codeigniter Возвращает массив вызывающей функции - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть модель с одной нормальной функцией и одной рекурсивной функцией, как показано ниже:

public function fxn1($mid)
{
    //Some CRUD code is also written to fetch something for some purpose, so using fxn1 is necessary before calling the recursive function.

    $arr=array();
    $i=0;
    return $this->fxn2($mid, $arr, $i); //THIS RETURNS NULL TO THE CONTROLLER WHILE IT SHOULD SEND THE ARRAY VALUES. 
    //var_dump($this->fxn2($mid, $arr, $i)) also prints NULL here
}
public function fxn2($mid, $arr, $arrcnt)
{
    //Some of my code fetches values from table and pushes them to the array
    array_push($arr, valuefetchedfromtable);
    $arrcnt++;
    if($arrcnt >= count($arr))
    {
        return $arr; // THIS LINE RETURNS NULL TO FXN1

        /* Using var_dump($arr); here prints the array values fine: 
        array(81) { [0]=> string(8) "20181006" [1]=> string(8) "20181007" [2]=> string(8) "20181011" [3]=> string(8)…………………...and so on
        */

    }
    else
        $this->fxn2($arr[$arrcnt-1], $arr, $arrcnt);
}

Как вернуть $ arr из fxn2 в fxn1, чтобы fxn1 мог вернуть значения массива в контроллер?

1 Ответ

0 голосов
/ 30 ноября 2018

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

public function fxn1($mid)
{
    //Some CRUD code is also written to fetch something for some purpose, so using fxn1 is necessary before calling the recursive function.

    $arr=array();
    $i=0;
    return $this->fxn2($mid,$arr,$i); //THIS RETURNS NULL TO THE CONTROLLER WHILE IT SHOULD SEND THE ARRAY VALUES. 
    //var_dump($this->fxn2($mid,$arr,$i)) also prints NULL here
}
public function fxn2($mid,&$arr,&$arrcnt) //change over here
{
    //Some of my code fetches values from table and pushes them to the array
    array_push($arr, valuefetchedfromtable);
    $arrcnt++;
    if($arrcnt>=count($arr))
    {
        return $arr; // THIS LINE RETURNS NULL TO FXN1

        /* Using var_dump($arr); here prints the array values fine: 
        array(81) { [0]=> string(8) "20181006" [1]=> string(8) "20181007" [2]=> string(8) "20181011" [3]=> string(8)…………………...and so on
        */

    }
    else
        $this->fxn2($arr[$arrcnt-1],$arr,$arrcnt);
}
...