php - 多维数组中每天的Sum数组值

时间:2014-07-04 14:19:09

标签: php arrays multidimensional-array

在Stackoverflow上有很多关于如何在多维关联数组中求和的Q& As,但我还没有找到在多维关联数组中进行小计的实例。

例如,我有一个mysql查询的数据出现在这个形状的php中:

$myArray = array(
    '2014-4-3' => 2,
    '2014-4-4' => 3,
    '2014-4-5' => array(
        0 => 3,
        1 => 7,
        2 => 7,
        3 => 7
    )
);

基本上,我白天会对餐馆的收视率进行调整。有些日子可能会有很多评级而其他日子会有更少的评分(那些日期没有评级从数组中省略)。在有更多评级的日子里,我想总结一下这一天的总数,所以一个新的数组看起来如下:

'2014-4-3' => 2
'2014-4-4' => 3
'2014-4-5' => 24

我已经尝试了几个小时来破解用于求和多维数组的foreach和函数方法但到目前为止还没有。一个关键问题是,由于每天都添加了相同的过程,所以事先并不知道这些日子。

3 个答案:

答案 0 :(得分:2)

您可以使用array_map()array_sum()执行此操作:

$output = array_map(function($a) { 
    return is_array($a) ? array_sum($a) : $a; 
}, $myArray);

Here's a demo

答案 1 :(得分:0)

您可以简单地将嵌套foreachis_array()

一起使用
$myArray = array(
    '2014-4-3' => 2,
    '2014-4-4' => 3,
    '2014-4-5' => array(
        0 => 3,
        1 => 7,
        2 => 7,
        3 => 7
    )
);
$new=array();
foreach($myArray as $day=>$value){
    $newval =0;
    if(is_array($value)){
        foreach ($value as $val) {
            $newval += $val;
        }
    }else{
        $newval = $value;
    }
    $new[$day]=$newval;
}

var_dump($new);

答案 2 :(得分:0)

你可以尝试这个:

foreach($myArray as &$value){
    if(is_array($value)){
         $value = array_sum($value);
    }
}