У меня есть этот код здесь …
$remaining = 0; foreach($clientArrayInvoice as $key=>$row){ $remaining = $remaining + $row['total']; }
Что он делает, он принимает значения total и добавляет их … но когда у меня есть значения, которые являются отрицательными, он также добавляет их для примера, когда у меня есть -51.75
и -17.85
я получаю -69.60
который он должен be -33.90
как это исправить?
`-33.901 – это значение, которое я ожидаю, потому что когда его два отрицания я бы хотел вычесть, не добавляйте
Спасибо, J
Это может помочь:
(-51.75) + (-17.85) = -69.60 (-51.75) - (-17.85) = -33.90
Предполагая, что вам всегда нужно добавить второе число независимо от его знака, вам нужно принять абсолютное значение с помощью функции abs
с помощью $row['total']
:
$remaining = 0; foreach($clientArrayInvoice as $key=>$row){ $remaining = $remaining + abs($row['total']); }
В ответ на то, что вы обновили в своем вопросе:
-33.90 – это значение, которое я ожидаю, потому что когда его два отрицания я бы хотел вычесть, не добавляйте
Это в значительной степени то, что делает функция abs
. Я мог бы переписать вышеприведенный фрагмент кода как:
$remaining = 0; foreach($clientArrayInvoice as $key=>$row) { if ($remaining >= 0) { $remaining = $remaining + abs($row['total']); } else { $remaining = $remaining - abs($row['total']); } }
Однако это делает то же самое, что просто использовать функцию abs
PHP, так как вы всегда добавляете величину $row['total']
до $remaining
.
снова -> см. функцию abs () php, если вы хотите добавить вещи и игнорировать знак.
Я не уверен, что ваш вопрос в точности, но это продолжало бы добавлять абсолютные значения, если $remaining
отрицательный, пока он не станет положительным.
$ Остальные = $ Остальные + ($ остающиеся <0 && $ row ['остаточный баланс'] <0? -1: 1) * $ row ['restbalance']);
Это работает для вашего примера, это будет 0 - 51.75 + 17.85 = -33.9
. Но я не уверен, что это поведение, которое вы хотите в большей картине.