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