【发布时间】:2019-04-29 18:49:00
【问题描述】:
我觉得问这个很愚蠢,因为我觉得我应该能够解决这个问题,但可惜我在这上面花费了太多时间并且感到沮丧,所以我想我会请求一些帮助。我有一个如下所示的 PHP 数组。这只是一个示例,因为该项目正在进行中:
$donations = array(
"2018 December" => array('30','20','100'),
"2018 November" => array('10','5','200','1000')
);
我已经多次尝试嵌套 for 和 foreach 循环来尝试获取值,我可以接近,但我似乎总是遇到不同的障碍。例如,我曾经将年份和月份作为子数组的一部分。我能够使用 for 然后 foreach 循环成功提取所有值,但我无法弄清楚如何排除 foreach 中的前两个元素(年和月)。这是最终目标...
每个子数组都包含以美元为单位的个人会员捐款。随着更多捐款的进入,该阵列可能会在本月增长,但一旦该月滚动,下个月的子阵列开始填充捐款,并且上个月被“存档”。我需要对每个子数组的所有捐款求和,并让每个值都可以表示为百分比(四舍五入到最接近的整数),作为显示在网页上的条形图的一部分。
谁能帮我确定我的流程吗?
这是我最初尝试的。这是使用较旧的 uglier 数组。需要注意的是,这个版本目前没有四舍五入到最接近的整数。还没有弄清楚那部分。这些数字在这个例子中很好地锻炼了。此外,如果您好奇,$total 会在页面的不同部分单独计算。 $total = 该组每月的运营成本,但在此示例中,我手动将其设置为 $100。
$donate = array(
array("5","10"),
array("20","30"),
array("0"),
array("0"),
array("0")
);
$keydonate = array_keys($donate);
$taco = array();
for($i = 0; $i < count($donate); $i++) {
foreach($donate[$keydonate[$i]] as $value) {
$sum = $sum + $value;
$taco[$i] = ($sum/$total)*100;
}
}
这有点工作,但同样,我的逻辑在这里有严重缺陷,而且这种方法有一些非常严重的错误。例如,这些数组从前几个月不断地相互添加。每个月他们都需要重置为默认值。请注意在屏幕截图中,12 月实际上是 12 月和 11 月的总和,然后又继续?此外,我还喜欢能够将月份和年份添加到数组中,这是该版本无法处理的。我需要一些严肃的指导和例子来说明正确的方法。我知道的 PHP 足够危险!
谢谢!
【问题讨论】:
-
百分比是否应该是该月总数占所有月份总数的百分比?
-
在此示例中,总计表示每月的运行费用。几个月之间完全没有重叠。也就是说,每月保持运行需要花费 100 美元。在这个例子中,15%(15 美元)是在 11 月份捐赠的。现在,我知道我们还没有到 12 月,但这只是一个例子。从技术上讲,根据阵列,12 月份捐赠了 50 美元,但显示不正确。将 12 月的 50 美元与 11 月的 15 美元相加。有意义吗?所有这些都是让会员了解我们当前(和未来)月份是否有充足资金的简单方法。
-
将
$sum = 0;放在foreach($donate[$keydonate之前以在下个月计算开始前重置总和
标签: php arrays for-loop multidimensional-array