PHP循环计算,获取上一个值并添加当前值
我试图得到一些计算的当前循环的先前值。 首先,让我们来描述代码的作用PHP循环计算,获取上一个值并添加当前值,php,Php,我试图得到一些计算的当前循环的先前值。 首先,让我们来描述代码的作用 外部循环生成月份名称 $forecast\u correction是用于更正某些值的循环 我们的想法是对月份进行预测/预测,并确定月份的基本成本和违约百分比 这是循环的逻辑。一月是开始月份,我们在那里设置了基准$price,但下个月(二月)应该是一月*$default\u%, 三月应该是二月*$default\u percent等。所有这些都应该包括更正 关于修正,我们有两个变量 $percentage = (!empty
- 外部循环生成月份名称
- $forecast\u correction是用于更正某些值的循环
$price
,但下个月(二月)应该是一月*$default\u%,
三月应该是二月*$default\u percent
等。所有这些都应该包括更正
关于修正,我们有两个变量
$percentage = (!empty($modified_percentage)) ? $modified_percentage : $default_percent;
$month_cost = $price * $percentage + $correction_cost;
如果外循环月份($m)等于校正数组$month,则百分比可以更改,否则为默认值。
月成本
是一项基本计算
+----------+---------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+------------+------------+
| jan | feb | mar | apr | may | june | july | augu | sept | oct | nov | dece |
+----------+---------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+------------+------------+
| 41290.65 | 41290.65*1.03 | feb * 1.03 | mar * 1.03 | apr * 1.03 | may * 1.03 | june * 1.03 | july * 1.03 | augu * 1.03 | sept * 1.03 | oct * 1.03 | nov * 1.03 |
+----------+---------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+------------+------------+
代码片段
如果你需要进一步的澄清,请不要犹豫,我非常坚持这一点
MCVE沙箱
我认为只需对示例代码进行一些小的修改,就可以实现您想要的功能
我将$price重命名为$base\u month\u cost,最初定义如下:
$base_month_cost = 41290.65;
用于计算外部循环中的$month_成本:
$month_cost = $base_month_cost * $percentage + $correction_cost;
然后,在计算$month_成本的行(上面)之后,我添加了一个新行来重新定义$base_month_成本:
$base_month_cost = $month_cost;// set here for use in next iteration
这意味着每个连续月份的$month_成本基于上个月的$month_成本
您还希望确保在计算1月份的$month_成本时不应用任何百分比的增加。我可以想出两种解决这个问题的方法:
您可以将“百分比”值1添加到$forecast\u correction数组中(因此初始$base\u month\u成本乘以1,并且保持不变)
您可以在for循环中添加一些附加逻辑,如果$m==1,则将$percentage设置为1;如果$m==1,则忽略$percentage,对$month\u成本进行不同的计算
我认为第一种方法更干净
希望这就是你想要的。当我运行它进行修改后的测试时,我注意到在您的示例中,4月份的百分比值为0.15,这大大降低了该月份(以及连续月份)的$month成本。似乎是合理的数字,将检查metion的更多一件事:第一个月应为based\month\u成本+更正,百分比不适用于第一个循环。其他一切似乎都很好是的,我应该发现1月份的百分比问题。我已经用几种方法更新了我的答案来解决这个问题。
$month_cost = $base_month_cost * $percentage + $correction_cost;
$base_month_cost = $month_cost;// set here for use in next iteration