как получить функцию, возвращающую значение массива в php 5.5?

1

Я попытался сбросить массив внутри функции, и я получил все необходимое значение. Но после возврата в $ uplines он показывает мне null. Понятия не имею почему. Пробовал 2 массива, используя список ($ array1, $ array2), но для меня все еще null. Может ли кто-нибудь указать мне? если они ошибаются. Спасибо и ура!

$uplines= $this->getTotalUpline($member,$level,$array1,$no);

Вот функция:

function getTotalUpline($member,$count,$array1,$no)
{
    $memberUplineId = $member->getUplineDistId();
    $c = new Criteria();
    $c->add(MlmDistributorPeer::DISTRIBUTOR_ID,$memberUplineId);
    $exist = MlmDistributorPeer::doSelectOne($c);

    if($exist && $memberUplineId != 1)
    {
        $array1[$count][0] = $exist->getDistributorId();
        $array1[$count][1] = $exist->getAccountType();

        $count++;
        $this->getTotalUpline($exist,$count,$array1,$no);
    }
    elseif($memberUplineId == 1)
    {
        var_dump($array1);
        return $array1;
    }
}
  • 0
    Ваш If block не возвращает array пожалуйста, добавьте к нему. Или добавить в конце функции.
Теги:
arrays
function
return

2 ответа

0

Я исправил проблему. Сделайте массив ссылкой в параметре функции.

$this-> getTotalUpline ($ член, уровень $, $ массив1, $ нет);

================================================== ===================== Есть два способа исправить проблему, добавить '&' в параметр функции

1) функция getTotalUpline ($ member, $ count и $ array1, $ no)

или добавить еще один "возврат" внутри оператора if

2) $this-> getTotalUpline ($ exist, $ count, $ array1, $ no);

Полная функция:

function getTotalUpline($member,$count,$array1,$no)
    {
        $memberUplineId = $member->getUplineDistId();
        $c = new Criteria();
        $c->add(MlmDistributorPeer::DISTRIBUTOR_ID,$memberUplineId);
        $exist = MlmDistributorPeer::doSelectOne($c);

        if($exist && $memberUplineId != 1)
        {
            $array1[$count][0] = $exist->getDistributorId();
            $array1[$count][1] = $exist->getAccountType();

            $count++;
            return $this->getTotalUpline($exist,$count,$array1,$no);
        }
        return $array1;
    }
0

Возможный указатель: вы возвращаете $ array1 в блок elseif. если условие ложно, то возвращаемое по умолчанию значение равно NULL (без явного возврата)

 elseif($memberUplineId == 1)
{
    var_dump($array1);
    return $array1;
}
  • 0
    Спасибо за ответ. Условие всегда корректно, если только не найдено, что id равен 1, что означает наивысший идентификатор. Он будет возвращать все элементы $ array. Что означает, что я должен вывести возврат за пределы оператора if?
  • 0
    вы можете попробовать переместить возвращаемый массив $ array1 за пределы блока elseif, если это логично с кодом. Код в текущем состоянии вернет $ array1 без изменений, если $ memberUplineId == 1 или ноль в противном случае.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню