Недостатки PHP продолжают добавлять

У меня есть этот код здесь …

$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 . Но я не уверен, что это поведение, которое вы хотите в большей картине.