-6

我这里有这个代码...

$remaining = 0;
foreach($clientArrayInvoice as $key=>$row){
            $remaining = $remaining + $row['total'];   
}

它的作用是,它获取总计的值并将它们相加......但是当我有负值时,它也会将它们相加,例如当我有-51.75并且-17.85我得到-69.60它应该-33.90如何解决这个问题时?

`-33.901 是我期望的值,因为当它的两个负数我想减去而不是相加时

谢谢,J

4

3 回答 3

9

这可能会有所帮助:

(-51.75) + (-17.85) = -69.60
(-51.75) - (-17.85) = -33.90

假设您总是需要添加第二个数字而不管它的符号,您需要通过使用PHPabs函数来获取绝对值$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']);   
    }
}

但是,这与简单地使用 PHP 函数的作用完全相同abs,因为您总是将 的大小添加$row['total']$remaining.

于 2012-08-27T16:33:07.797 回答
3

再次 -->如果你想添加东西并忽略符号,请参见 php 的abs() 函数。

于 2012-08-27T16:32:51.920 回答
0

我不确定你的问题到底是什么,但是如果$remaining是负数,这将继续添加绝对值,直到它再次为正数。

$remaining = $remaining + ($remaining < 0 && $row['remainingbalance'] < 0 ? -1 : 1) * $row['remainingbalance']);

这适用于您的示例,它将是0 - 51.75 + 17.85 = -33.9. 但我不确定这是否是您在大局中想要的行为。

于 2012-08-28T14:17:17.530 回答