Php 如何对具有不同键的列进行多维数组求和?

Php 如何对具有不同键的列进行多维数组求和?,php,Php,我有一个二维数组,如下所示: array:4 [ 0 => array:3 [ "2504_2512" => 309 "2504_2513" => 654 "2504_2514" => 234 ] 1 => array:3 [ "2505_2512" => 143 "2505_2513" => 488

我有一个二维数组,如下所示:

array:4 [
  0 => array:3 [
    "2504_2512" => 309
    "2504_2513" => 654
    "2504_2514" => 234
  ]
  1 => array:3 [
    "2505_2512" => 143
    "2505_2513" => 488
    "2505_2514" => 68
  ]
  2 => array:3 [
    "2506_2512" => 325
    "2506_2513" => 670
    "2506_2514" => 250
  ]
  3 => array:3 [
    "2507_2512" => 263
    "2507_2513" => 608
    "2507_2514" => 188
  ]
]
我想做的是在不改变键的情况下对每列的所有值求和,可以吗? 例如:

。。。 我已经对第一列做了如下操作:

$columnSum = 0;    
foreach($array as $row){
        $columnSum += $row[array_key_first($row)];
    }
但是我不想要第一列,而且我看不到不改变键就可以做到这一点的方法

我已经试着搜索类似的问题,但没有找到,如果它存在,如果有人告诉我,我将非常感激

编辑:对于这个不完整的问题,我很抱歉,我知道我可以使用
array\u values()
制作另一个数组,将键更改为数字索引。我想问的是,是否可以使用不同的键操纵原始数组(而不更改键)。 如果可能的话,不用使用很多for,因为我将接收的数组可能比问题中的数组大得多。 最终的数组将类似于:

 Array
(
    [0] => 1040
    [1] => 2420
    [2] => 740
)
但我想知道是否有可能在不重新建立原始数组索引的情况下到达那里

<?php
$array = [
  0 => [
    "2504_2512" => 309,
    "2504_2513" => 654,
    "2504_2514" => 234,
  ],
  1 => [
    "2505_2512" => 143,
    "2505_2513" => 488,
    "2505_2514" => 68,
  ],
  2 => [
    "2506_2512" => 325,
    "2506_2513" => 670,
    "2506_2514" => 250
  ],
  3 => [
    "2507_2512" => 263,
    "2507_2513" => 608,
    "2507_2514" => 188
  ]
];
$columnSums = [];    
foreach($array as $data){
    $values = array_values($data);
    foreach ($values as $key => $value) {
         if (empty($columnSums[$key])) {
             $columnSums[$key] = $value;
         } else {
             $columnSums[$key] += $value;
         } 
     }
}

print_r($columnSums);

只需使用
array\u values
即可获得一个新数组,其中包含值和键,如0,1,2

可能是您的朋友“不更改键”是什么意思?您希望保留哪些关键点?@JimPanse此问题中的子数组的关键点是相同的,正如您所看到的,在我的例子中,子数组中值的关键点是不同的。@El_Vanja我是指子数组中值的关键点。我仍然无法理解您希望如何保留它们(因为每个都不同)同时也有一笔。。。你能发布你想要的最终数组的和的样子吗(键和值)?我相信目标是保留关联键(
2504_2512
等)。据我所知,帖子所有者想要得到数组值的和。很遗憾,我可能误解了这个问题,因为在我看来,第二层的键是相同的。我现在明白了,他们不是。@V-K谢谢你的回答,如果不能按我想的方式做,我会接受这个回答。@Joaonic什么是“我想的方式”?结果与你想要的有什么不同?
<?php
$array = [
  0 => [
    "2504_2512" => 309,
    "2504_2513" => 654,
    "2504_2514" => 234,
  ],
  1 => [
    "2505_2512" => 143,
    "2505_2513" => 488,
    "2505_2514" => 68,
  ],
  2 => [
    "2506_2512" => 325,
    "2506_2513" => 670,
    "2506_2514" => 250
  ],
  3 => [
    "2507_2512" => 263,
    "2507_2513" => 608,
    "2507_2514" => 188
  ]
];
$columnSums = [];    
foreach($array as $data){
    $values = array_values($data);
    foreach ($values as $key => $value) {
         if (empty($columnSums[$key])) {
             $columnSums[$key] = $value;
         } else {
             $columnSums[$key] += $value;
         } 
     }
}

print_r($columnSums);
Array
(
    [0] => 1040
    [1] => 2420
    [2] => 740
)