У меня есть переменная $paymentsTotal, которая представляет собой сумму всех платежей. Затем я хочу перебрать все непогашенные суммы и уменьшить переменную $paymentsTotal для каждой непогашенной суммы.
например:
TotalPayments = 900 - 200
700 - 300
400 - 100
300 - 300
Stop 0
И пока $paymentsTotal больше суммы задолженности, он должен возвращать значение true.
Я пробовал это:
foreach ($invoices as $invoice) {
if ($paymentTotal >= $paymentTotal -= $invoice->amount) {
echo $invoice->amount . ' - PAID <br>';
}
}
но он повторяет каждый результат, несмотря ни на что.






Попробуйте что-нибудь вроде...
$paymentTotal = 0; // whatever this is before iteration
foreach($invoices as $invoice) {
if ($invoice->amount > $paymentTotal) {
$paymentTotal -= $invoice->amount; // assuming you have a field for the paid amount
$invoice->amount = $paymentTotal; // new invoice amount
echo "{$invoice->amount} - PAID <br>";
}
}
спасибо за это, но, похоже, это не работает так, как ожидалось. Кажется, совет Никоса М был хорошим. foreach ($invoices as $invoice) { $something = $paymentTotal - $paymentTotal -= $invoice->amount; if ($paymentTotal >= $something) { echo $invoice->amount . ' - PAID <br>'; } }
Пожалуйста. Пожалуйста, ответьте с этим кодом и примите ваш ответ, чтобы другие пользователи могли видеть, что вы сделали, чтобы решить эту проблему.
Возможно, Никос мог бы создать ответ, чтобы я мог отметить его как ответ.
не используйте оператор автоопределения внутри, если он имеет неопределенное поведение. лучше децементировать до или после если и проверить тогда