<?php
error_reporting(-1);
function getCreditTotal($creditSum, $percent, $commission, $accountFee, $payout)
{
$debt = $creditSum + $accountFee; /* плата за счёт сразу увеличивает долг */
$total = 0;
$months = 0;

while ($debt > 0) {
/* 1. начисляем проценты и комиссию */
$debt = $debt * (1 + $percent) + $commission;

/* 2. платим не больше $payout за раз */
$payment = min($payout, $debt);
$debt -= $payment;
$total += $payment;
$months++;
}

return array($total, $months);
}

$creditSum = 40000;
$payout = 5000;

list($homoCreditTotal, $homoMonths) = getCreditTotal($creditSum, 0.04, 500, 0, $payout);
list($softbankTotal, $softMonths) = getCreditTotal($creditSum, 0.03, 1000, 0, $payout);
list($strawberryTotal, $strawMonths) = getCreditTotal($creditSum, 0.02, 0, 7777, $payout);

echo "homoCredit: {$homoCreditTotal} руб. ({$homoMonths} мес.)\n";
echo "softbank: {$softbankTotal} руб. ({$softMonths} мес.)\n";
echo "strawberryBank: {$strawberryTotal} руб. ({$strawMonths} мес.)\n";

$best = min($homoCreditTotal, $softbankTotal, $strawberryTotal);

if ($best === $strawberryTotal) {
echo "Выгоднее всего: strawberryBank\n";
} elseif ($best === $homoCreditTotal) {
echo "Выгоднее всего: homoCredit\n";
} else {
echo "Выгоднее всего: softbank\n";
}