我正在尝试为某些计算获取当前循环的先前值。 作为起点,我们来描述代码是什么。
我们的想法是对具有基本成本和月份默认百分比的月份进行预测/预测。
这是循环的逻辑。 1月是开始月份,我们在那里设置基数$price
,但下个月(2月)应该是1月* $default_percent
,
三月应该是二月* $default_percent
等。所有都应该包括更正。
当涉及到更正时,我们得到了两个变量
$percentage = (!empty($modified_percentage)) ? $modified_percentage : $default_percent;
$month_cost = $price * $percentage + $correction_cost;
如果外循环月($ m)等于校正数组$ month,则 Percentage
可以更改,否则为默认值。
Month cost
是基本计算。
+----------+---------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+------------+------------+
| 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 |
+----------+---------------+------------+------------+------------+------------+-------------+-------------+-------------+-------------+------------+------------+
代码段
<?PHP
$forecast_correction = array(
array(
'month' => '2',
'add' => 150.00,
'substract' => 0.00,
'final' => 150.00,
'percent' => 1.02
),
array(
'month' => '3',
'add' => 0.00,
'substract' => 250.00,
'final' => -250.00,
'percent' => NULL
),
array(
'month' => '4',
'add' => 0.00,
'substract' => 0.00,
'final' => 0.00,
'percent' => 0.15
)
);
$price = 41290.65;
$default_percent = 1.03;
for ($m = 1; $m <= 12; ++$m) {
$correction_cost = 0;
$modified_percentage = null;
foreach ($forecast_correction as $correction) {
if ($m == $correction['month']) {
$correction_cost = $correction['final'];
if (!empty($correction['percent'])) {
$modified_percentage = $correction['percent'];
}
}
}
;
$percentage = (!empty($modified_percentage)) ? $modified_percentage : $default_percent;
$month_cost = $price * $percentage + $correction_cost;
echo date('F', mktime(0, 0, 0, $m, 1)) . " :: $month_cost :: " . $correction_cost . " :: " . $percentage . "% \n";
}
问题和所需的输出
问题:如何在此特定示例中实现2月= 1月*百分比逻辑,以便使用更正数组正确计算所有结果。
所需的输出(可以是纯文本,数组等等。)
Month : Cost
如果您需要进一步澄清,请不要犹豫,我很坚持这一点。
MCVE沙箱
http://sandbox.onlinephpfunctions.com/code/0c705ab721c6160813b98d133d8a1b7ff876cdca
答案 0 :(得分:2)
我认为通过一些小修改,您的示例代码将完成您想要的任务。
我将$ price重命名为$ base_month_cost,最初定义它:
$base_month_cost = 41290.65;
用于在外循环中计算$ month_cost:
$month_cost = $base_month_cost * $percentage + $correction_cost;
然后,在计算$ month_cost的行(上面)之后,我添加了一个新行来重新定义$ base_month_cost:
$base_month_cost = $month_cost;// set here for use in next iteration
这意味着每个连续月份的$ month_cost基于上个月的$ month_cost。
您还希望确保在计算1月份的$ month_cost时不应用百分比增加。我可以想到两个解决这个问题的方法:
我认为第一种方法更清洁。
希望这就是你要找的东西。当我通过我的修改运行它进行测试时,我注意到4月份的百分比值在您的示例中为0.15,这显着降低了$ month_cost(以及连续几个月)。