fork download
  1. <?php
  2.  
  3. function totalCreditCost($amount, $monthlyPayment, $interestRate, $comission, $downpayment) {
  4. $totalPayments = 0;
  5. $debtAmount = $amount + $downpayment; // сумма вместе с платежом за открытие (???)
  6. while ($debtAmount > 0) {
  7. $debtAmount = $debtAmount * $interestRate + $comission;
  8. $payment = $debtAmount < $monthlyPayment
  9. ? $debtAmount
  10. : $monthlyPayment; // чтоб не платить больше чем должны.
  11. $debtAmount -= $payment; // Задолженность по кредиту
  12. $totalPayments += $payment; // Сумма выплат
  13. }
  14. return $totalPayments;
  15. }
  16.  
  17. $banks = [
  18. 'first' => array('rate' => 1.04, 'comission' => 500, 'downpayment' => 0),
  19. 'second' => array('rate' => 1.03, 'comission' => 1000, 'downpayment' => 0),
  20. 'third' => array('rate' => 1.02, 'comission' => 0, 'downpayment' => 7777)
  21. // Хоть +9000 разных банков, код меняться уже не будет
  22. ];
  23.  
  24. $creditCosts = [];
  25. foreach ($banks as $name => $params) {
  26. $creditCosts[$name] = totalCreditCost( 40000,
  27. 5000,
  28. $params['rate'],
  29. $params['comission'],
  30. $params['downpayment']);
  31. echo "Выплаты в банке $name - " . $creditCosts[$name] . "\n";
  32. }
  33.  
  34. echo "Наименьшая сумма - " . min($creditCosts);
  35. echo " выдаётся " . array_search(min($creditCosts), $creditCosts) . " банком\n";
  36.  
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Выплаты в банке first - 56425.164153843
Выплаты в банке second - 61270.186744521
Выплаты в банке third - 53561.117233508
Наименьшая сумма - 53561.117233508 выдаётся third банком