php减少数组中的值

时间:2017-09-07 13:25:22

标签: php arrays

我有这个数组:

Array
(
    [236] => 5.00
    [39] => 5.00
    [19] => 5.00
    [37] => 5.00
    [185] => 5.00
    [235] => 3.00
)

例如:我有20.总值是28.现在我想减少数组中的值,直到减去20。

所以这可能是新阵列(它从中减去了它的值)。总值= 8(28-20)

阵列

(
    [236] => 0.00
    [39] => 2.00
    [19] => 0.00
    [37] => 0.00
    [185] => 3.00
    [235] => 3.00
)

怎么做?如果可能,我想要一个选项,从最高值或键号中减去第一个。

1 个答案:

答案 0 :(得分:0)

设置总减去量,然后通过引用迭代数组。从总减去量中减去每个数组值,并将该值设置为零,直到得到一个大于剩余减去量的值。然后用剩余的减去量减少该值。

$subtract_amount = 20;

foreach ($array as &$value) {
    if ($value <= $subtract_amount) {
        $subtract_amount -= $value;
        $value = 0;
    } else {
        $value -= $subtract_amount;
        $subtract_amount = 0;
    }
    if ($amount == 0) break;
}
unset($value); // unset the reference

如果您希望它首先使用最高值/键,那么事先使用arsortkrsort对数组进行排序。