在foreach结束之前的数组元素的总和,PHP图

时间:2013-09-08 19:42:31

标签: php arrays foreach

问题我在构建php脚本时发生了根据数据库中的值自动生成图形。

我在X线上列出了所有12个月,并在Y线上每月收入月收入总和。为了在每次我想要将月收入的总和转换为所有图表上的%inpact时保持相同大小的图形,为此我将使用简单的公式:

(数组元素/所有数组元素的总和)* 100

这应该告诉所有图的哪个%部分是每个数组元素

代码非常简单:

foreach($years as $year) {
// Do something
    foreach($months as $month) {
        foreach( // this foreach is getting monthly income foreach month \\ ) {
            // so in here we get $total_by_date[$year][$month];
        }
        $year_total[$year] += $total_by_date[$year][$month]; //sum of (sum of each month income)
        ?>
        <div style="background:black;height:20px;width:<?php echo ($total_by_date[$year][$month] / $year_total[$year]) * 100 ?>px;">div> //drawing graph based on given values
        <?php
    }
}

我在各种条件下进行了检查,看起来工作正常,我得到了一些前几个月的清单,几个月内我得到了正确显示的月收入。尽管如此,它本身并不起作用,为了使其工作,我需要在开始输出绘制图形之前得到总收入,而不是从foreach循环中的每个元素被扫描并显示求和函数正在进行数组行走所以它每个扫描月份的总价值增加,最终在1月和2月0收入时几乎没有错误,即使年收入应该是6700 - 在前几个月显示2400,然后是3500然后是5400,最后是12月的6700。 / p>

我想我需要在foreach开始之前获得总年收入逐月输出,问题是我不知道该怎么做。我提出了:

if(empty($year_sub[$year])) { unset($year_sub[$year]); continue; }
放在div输出之前,它有点帮助,它删除了所有的初始0,所以它不会在开始时崩溃,但仍然在动做总结,搞砸了这个想法。

也许有人知道如何在输出之前开始和完成总结或其他一些很好的解决方案。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

您在完成年度总计之前打印结果(代码未经过测试)。

foreach($years as $year) {
// Do something
    // 1. Sum of the year
    foreach($months as $month) {
        foreach( // this foreach is getting monthly income foreach month \\ ) {
            // so in here we get $total_by_date[$year][$month];
        }
        $year_total[$year] += $total_by_date[$year][$month]; //sum of (sum of each month income)
    }
    // 2. Convert to % and print
    foreach($months as $month) {
        ?>
        <div style="background:black;height:20px;width:<?php echo ($total_by_date[$year][$month] / $year_total[$year]) * 100 ?>px;">div> //drawing graph based on given values
        <?php
    }
}