Рекурсивная функция PHP Laravel с глобальной переменнойPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Рекурсивная функция PHP Laravel с глобальной переменной

Сообщение Anonymous »

Это рекурсивная функция. это сумма торгового баланса всех ссылающихся пользователей рекурсивно (вложенно) и сохранение баланса в глобальной переменной.

Код: Выделить всё

$GLOBALS['recursivelySumTradingBalance'] = 0;
function recursivelySumTradingBalance($user){
foreach ($user->referral_child_users_count ?? [] as $childUser) {
$trd_balance = Trading::where('status', 1)->where('user_id', $childUser->id)->sum('balance');
$GLOBALS['recursivelySumTradingBalance'] += $trd_balance ?? 0;
recursivelySumTradingBalance($childUser);
}
return $GLOBALS['recursivelySumTradingBalance'];
}
Вызов рекурсивной функции снизу:

Код: Выделить всё

public function tradingTargetAmount($user){
$total_target_trading_amount = 0;
$refer_users = User::where('ref_by', $user->id)->get();
foreach ($refer_users ?? [] as $refer_user) {
$amount = $total_target_trading_amount = 0;
$amount += Trading::where('status', 1)->where('user_id', $refer_user->id)->sum('balance');
$amount += recursivelySumTradingBalance($refer_user);
$total_target_trading_amount += $amount;
}
return $total_target_trading_amount;
}
Проблема заключается в рекурсивной функции: при сохранении в глобальной переменной она также получает баланс предыдущего пользователя и суммирует оба показателя.
Как я могу это решить.< /strong>

Подробнее здесь: https://stackoverflow.com/questions/787 ... l-variable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»