数组中值的智能减法(php)

问题描述 投票:0回答:1

PHP语言

难于将函数写入数组?中的每个[Amount]值中的减法值,直到找到减法值?为止。

示例我需要(减去之前):

[MainStockAddedArr] => Array
                        (
                            [0] => Array
                                (
                                    [Amount] => 10
                                    [Price] => 19.44
                                )

                            [1] => Array
                                (
                                    [Amount] => 15
                                    [Price] => 15.55
                                )

                            [2] => Array
                                (
                                    [Amount] => 20
                                    [Price] => 11.55
                                )

                            [3] => Array
                                (
                                    [Amount] => 30
                                    [Price] => 11.10
                                )

                        )

例如,相减值是30件。所以我需要数组中的结果看起来像这样:

    [MainStockAddedArr] => Array
                        (
                            [0] => Array
                                (
                                    [Amount] => 0
                                    [Price] => 19.44
                                )

                            [1] => Array
                                (
                                    [Amount] => 0
                                    [Price] => 15.55
                                )

                            [2] => Array
                                (
                                    [Amount] => 15
                                    [Price] => 11.55
                                )

                            [3] => Array
                                (
                                    [Amount] => 30
                                    [Price] => 11.10
                                )

                        )

在上面的示例中,两个值更改为0,因此已经取走了25件,在第三个值中,只取了5,给出了30件,所以不再需要。这仅是示例,减法值将是动态的,从该值之上的循环开始。

在减去值将大于整个数组(总和[Amounts])的情况下,否则需要。

arrays subtraction
1个回答
0
投票

这里是FIFO(先进先出)功能的示例。您可以尝试,如果需要的话可以进行一些校正。

function fifo($argArray, $argValue) {
    $total = $argValue;

    $i = -1;
    $count = count($argArray);

    while ($total > 0 && ++$i < $count) { // <== loop control
        $amount = $remains = $argArr[$i]['amount'] ?: 0;

        if ($amount) {
            $remains -= $amount > $total ? $total : $amount; // <== calc row remains

            $argArr[i]['amount'] = $remains; // <== set row remains
            $total -= $amount - $remains; // <== calc last total remains
        }
    }

    return ['lastIndex' => $i, 'totalRemains' => $total]; // <= last index been used and total remains
}

好运哥们。

© www.soinside.com 2019 - 2024. All rights reserved.