Sum Monthly数组值

时间:2014-07-24 00:52:42

标签: php arrays foreach

我一直试图让代码以某种格式输出数据,这样我就可以在图表中使用它,并希望在最后阶段得到一些帮助。提前谢谢。

这是我生成以下数组的代码。

    $monthly_sales_array = array();
    $i=0;
    foreach($ord as $sales)
    {
        $month_is = date('m-Y',$sales->order_date);
        $monthly_sales_array['months'][$month_is][$i] = $sales->qty*$sales->price_per;
        $i++;
    }

Array
(
[months] => Array
    (
        [07-2014] => Array
            (
                [0] => 33
                [1] => 33
                [2] => 26
                [3] => 26
                [4] => 38.5
                [5] => 33
                [6] => 165                 
            )

        [06-2014] => Array
            (
                [21] => 0.01
                [22] => 44
                [23] => 48
            )
    )
)

试图获得这个结果:

Array(
[months] => Array
    (
        [07-2014] => 354.5
        [06-2014] => 92.01
    )
)

2 个答案:

答案 0 :(得分:0)

您需要foreach。 (还有其他方法可以做到这一点,但我发现这是最容易的)

foreach($monthly_sales_array['months'] as &$month) {
  $total=0;
  foreach($month as $day) {
    $total+=$day;
  }
  $month=$total;
}

注意:&中的foreach($monthly_sales_array['months'] as &$month)运算符意味着当您更新$month时,它将在$monthly_sales_array中更新。

答案 1 :(得分:0)

尝试这样的事情:

$monthly_sales_array = array();
$my_array = array(
    'months' => array(
        '07-2014' => array(
                '0' => '33',
                '1' => '33',
                '2' => '26',
                '3' => '26',
                '4' => '38.5',
                '5' => '33',
                '6' => '165' ,                
            ),

        '06-2014' => array(
                '21' => '0.01',
                '22' => '44',
                '23' => '48',
            )
        )
);


foreach ($my_array['months'] as $key => $value) {
    $sum = array_sum(array_map(function ($a) { return $a; }, $my_array['months'][$key]));
    $monthly_sales_array['months'][$key] = $sum;    
}
print_r($monthly_sales_array);

<强>输出:

Array
(
    [months] => Array
        (
            [07-2014] => 354.5
            [06-2014] => 92.01
        )

)