Как уменьшить итог после каждой итерации

У меня есть переменная $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>';
   }
}

но он повторяет каждый результат, несмотря ни на что.

не используйте оператор автоопределения внутри, если он имеет неопределенное поведение. лучше децементировать до или после если и проверить тогда

Nikos M. 30.03.2019 14:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
31
1

Ответы 1

Попробуйте что-нибудь вроде...

$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>'; } }

user10980228 30.03.2019 14:45

Пожалуйста. Пожалуйста, ответьте с этим кодом и примите ваш ответ, чтобы другие пользователи могли видеть, что вы сделали, чтобы решить эту проблему.

Miranda 30.03.2019 14:47

Возможно, Никос мог бы создать ответ, чтобы я мог отметить его как ответ.

user10980228 30.03.2019 14:55

Другие вопросы по теме