Как я могу вернуть переменную при последнем вызове рекурсивной функции? - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть рекурсивная функция.Как я могу вернуть значение из этой рекурсивной функции при последнем вызове?

public function deneme($parent_id = 0, $sub_mark = 0, $str = '') {
    $this->db->select('*');
    $this->db->from('categories');
    $this->db->where('parent_id = ' . $parent_id);
    $this->db->order_by('id', 'ASC');
    $query = $this->db->get();
    if($query->num_rows() > 0) {
        $str .= '<ul>';
        foreach($query->result_array() as $row) {
            if ($parent_id == 0) {
                $str .= '<li class="active">';
            } else {
                $str .= '<li>';
            }
            $str .= '<a href="index.html">' . $row['name'] . '</a> </li> '; 
            $sub_mark++;
            $this->deneme($row['id'], $sub_mark, $str);
        }
        $str .= '</ul>';
    }
}

Я хочу вернуть переменную str.

1 Ответ

0 голосов
/ 08 декабря 2018

Похоже, что вам нужно несколько изменений, во-первых, чтобы вернуть собранную строку из подпрограммы в конце ...

        }
        $str .= '</ul>';
    }
    return $str;
}

Во-вторых, когда вы вызываете подпрограмму рекурсивно, вам нужноустановить возвращаемое значение для строки, которую вы генерируете ...

$str = $this->deneme($row['id'], $sub_mark, $str);
...