首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多维数组中每天的和数组值

在多维数组中每天的和数组值
EN

Stack Overflow用户
提问于 2014-07-04 14:19:08
回答 3查看 316关注 0票数 0

关于如何跨多维关联数组求和,有许多重要的问题&比如Stackoverflow,但我还没有找到在多维数组中执行小计的工作示例。

例如,我有数据从mysql查询中输出到具有以下形状的php中:

代码语言:javascript
复制
$myArray = array(
    '2014-4-3' => 2,
    '2014-4-4' => 3,
    '2014-4-5' => array(
        0 => 3,
        1 => 7,
        2 => 7,
        3 => 7
    )
);

从本质上说,我是在白天把餐馆的收视率调高。有些日子可能有很多收视率,而另一些则会少一些(数组中省略了那些没有评级的日子)。在收视率更高的日子里,我想总结一下这一天的总数,这样一个新的数组看起来就简单了如下:

代码语言:javascript
复制
'2014-4-3' => 2
'2014-4-4' => 3
'2014-4-5' => 24

几个小时以来,我一直试图破解用于对多维数组进行求和的foreach和functions方法,但到目前为止还没有。一个关键的问题是,由于每天都添加了相同的过程,因此无法提前知道这些日子。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-04 14:23:22

您可以使用array_map()array_sum()来完成这一任务。

代码语言:javascript
复制
$output = array_map(function($a) { 
    return is_array($a) ? array_sum($a) : $a; 
}, $myArray);

这是一个演示

票数 2
EN

Stack Overflow用户

发布于 2014-07-04 14:27:05

您可以简单地将嵌套foreachis_array()结合使用。

代码语言:javascript
复制
$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);
票数 0
EN

Stack Overflow用户

发布于 2014-07-04 14:36:11

你可以试试这个:

代码语言:javascript
复制
foreach($myArray as &$value){
    if(is_array($value)){
         $value = array_sum($value);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24576307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档