首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据二级键对2-昏暗数组的2级值进行求和?

如何根据二级键对2-昏暗数组的2级值进行求和?
EN

Stack Overflow用户
提问于 2015-04-28 12:18:32
回答 2查看 1.3K关注 0票数 0

我有一个像这样的多维数组:

代码语言:javascript
复制
array(
      0 => array(
         11 => 18.000,
         14 => 25.100,
         15 => 5.000,
         16 => 8.000,
         19 => 21.600'
     ),
     1 => array(
         11 => 9.100,
         12 => 2.700,
         14 => 2.300,
         15 => 18.800,
         16 => 9.500,
         17 => 6.900,
         19 => 9.400'
    ),
    2 => array(
        14 => 5.700
    ),
    3 => array(
       17 => 2.800,
       20 => 6.000
   ),
   4 => array(
       24 => 5.000,
       25 => 6.000,
       26 => 2.7
   ),
   5 => array(
       16 => 2.200
   ),
   6 => array(
      14 => 13.000,
      15 => 2.000,
      16 => 4.300,
      19 => 6.000
  ),
  7 => array(
      32 => 5.000,
      36 => 18.500
  )
 )

第二级数组有不同的长度.但是我想要得到具有相似键的元素的值,并将它们相加到一起,得到一个总计。

例如,如果数组名为$multi_dime。我想让$multi_dime[0][11]将它添加到$multi_dime[1][11],以此类推。

如果键不存在于以下数组中。它应该添加0或者忽略它。代码应该继续对第二级数组中的所有键执行此操作,并将结果存储在另一个数组中,如下所示:

代码语言:javascript
复制
array(  11 => 27.1,  14 => 46.1, ...)

我怎样才能做到这一点?数组总是二维的,但可以是任意长度的,第二级数组也可以是任意长度的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 12:25:23

只需使用前端或循环即可。这就是你处理数组的方式,不管是一,二,三,四,还是两百维。由于要有多个和,所以将和变量设为数组。在您的循环之外声明它,因为当循环完成时您将需要它。

代码语言:javascript
复制
$sums = array();
foreach($multi_dime as $vals)
{
    foreach($vals as $key=>$val)
    {
        // Now we are looping through all values in the second dimension.
        // If the key is not in the sums array, make it.
        if(!isset($sums[$key])) $sums[$key]=0;
        // We add this sum to the key now.
        $sums[$key]+= $val;
    }
}
ksort($sums); // Just in case you want the keys in order.
print_r($sums); // See all the sums.
票数 1
EN

Stack Overflow用户

发布于 2018-01-05 12:50:38

下面是一种效率较低的计算所有键特定列之和的方法(我假设)。唯一的区别是,在我的方法中没有迭代条件,它确实调用了“更重的”函数。

代码:(演示)

代码语言:javascript
复制
$result=[];
foreach($array as $subarray){
    $subarray=array_diff_key($subarray,$result);  // deny iteration of previously summed subarray keys
    foreach($subarray as $k=>$v){
        $result[$k]=array_sum(array_column($array,$k));  // sum the whole array's column
    }
}
var_export($result);

如果这是我的项目,我将编写我的代码非常类似于kainaw的(但不是确切的)。我不喜欢将初始值声明为0,然后在相同的迭代中添加到0 --这是不必要的双重处理。

代码:(演示)

代码语言:javascript
复制
foreach($array as $subarray){
    foreach($subarray as $k=>$v){
        if(!isset($result[$k])){
            $result[$k]=$v;
        }else{
            $result[$k]+=$v;
        }
    }
}
var_export($result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29919298

复制
相关文章

相似问题

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