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])的情况下,否则需要。
这里是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
}
好运哥们。