#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
тег? Это не имеет никакого отношения к этой теме.