gpt4 book ai didi

php - 继续在循环中减去值以获得mysql结果php

转载 作者:行者123 更新时间:2023-11-29 16:44:36 24 4
gpt4 key购买 nike

我有一个名为 example 的 mysql 表。

 Id   | Amount  | Left | Filled
1 | 1 | 1 | 0
2 | 4 | 4 | 0
5 | 7 | 7 | 0

我有一个名为$var = 9的变量现在我有一个名为 $array 的数组,其 id 为 array([0] => 1, [1] => 2, [2] => 5)本身就是一个mysql结果。如何创建一个循环,以便数组中的 ids 不断减去左侧并继续按照金额填充,但在 $var 的总值内,以便表中的最终结果为

 Id   | Amount  | Left | Filled
1 | 1 | 0 | 1
2 | 4 | 0 | 4
5 | 7 | 3 | 4

最佳答案

您可以使用 while 循环来循环 ids 并减少每次迭代的数量。

我不确定您如何访问数据库,因此我将其保留为伪值。

考虑以下代码:

$ids = array(1,2,5);
$value = 9;

function reduceAmount($id, $value) {
$query = mysqli_query($conn, "SELECT * FROM example WHERE Id='$id'");
$row = mysqli_fetch_array($query);
$take = min($row['Left'], $value); // the amount you can take (not more then what left)

$left = $row['Left'] - $take;
$filled = $row['Filled'] + $take;
$conn->query("UPDATE example SET Left='$left', Filled='$filled' WHERE Id='$id'")
return max(0, $value - $take);
}

while ($value > 0 && !empty($ids)) { // check if value still high and the options ids not finish
$id = array_shift($ids); //get first ID
$value = reduceAmount($id, $value);
}

您可以在循环结束时检查value是否仍大于0 - 当ids中没有足够的“金额”时可能会发生这种情况

关于php - 继续在循环中减去值以获得mysql结果php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53157749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com