PHP 多维数组中的数组总和
PHP Sum Of arrays inside a multidimensional array
这里需要一点帮助来汇总多维 php 数组中的数组
例如多维数组
Array
(
[0] => Array
(
[0] => 30
[1] => 5
[2] => 6
[3] => 7
[4] => 8
[5] => 9
[6] => 2
[7] => 5
)
[1] => Array
(
[0] => 50
[1] => 4
[2] => 8
[3] => 4
[4] => 4
[5] => 6
[6] => 9
[7] => 2
)
)
我想要一个结果数组,它将像这样保存这两个数组的总和
Array
(
[0] => 80
[1] => 9
[2] => 14
[3] => 11
[4] => 12
[5] => 15
[6] => 11
[7] => 7
)
任何帮助将不胜感激
谢谢!
这应该适合你:
<?php
$arr = array(
array(30, 5, 6, 7, 8, 9, 2, 5),
array(50, 4, 8, 4, 4, 6, 9, 2)
);
$result = array();
foreach($arr[0] as $k => $v)
$result[$k] = array_sum(array_column($arr, $k));
print_r($result);
?>
输出:
Array ( [0] => 80 [1] => 9 [2] => 14 [3] => 11 [4] => 12 [5] => 15 [6] => 11 [7] => 7 )
编辑:
如果您的 php 版本低于 5.4,您可以使用这个简单的解决方法:
function arrayColumn(array $array, $column_key, $index_key=null){
if(function_exists('array_column ')){
return array_column($array, $column_key, $index_key);
}
$result = [];
foreach($array as $arr){
if(!is_array($arr)) continue;
if(is_null($column_key)){
$value = $arr;
}else{
$value = $arr[$column_key];
}
if(!is_null($index_key)){
$key = $arr[$index_key];
$result[$key] = $value;
}else{
$result[] = $value;
}
}
return $result;
}
(注意一定要用arrayColumn()
)
来自手动评论:http://php.net/manual/de/function.array-column.php#116301
这应该适用于像您的示例之一那样的数组($arr
是一个类似于您示例中的数组,为了简单起见,我没有在这里定义它):
$res = array();
foreach($arr as $value) {
foreach($value as $key => $number) {
(!isset($res[$key])) ?
$res[$key] = $number :
$res[$key] += $number;
}
}
print_r($res);
这里需要一点帮助来汇总多维 php 数组中的数组
例如多维数组
Array
(
[0] => Array
(
[0] => 30
[1] => 5
[2] => 6
[3] => 7
[4] => 8
[5] => 9
[6] => 2
[7] => 5
)
[1] => Array
(
[0] => 50
[1] => 4
[2] => 8
[3] => 4
[4] => 4
[5] => 6
[6] => 9
[7] => 2
)
)
我想要一个结果数组,它将像这样保存这两个数组的总和
Array
(
[0] => 80
[1] => 9
[2] => 14
[3] => 11
[4] => 12
[5] => 15
[6] => 11
[7] => 7
)
任何帮助将不胜感激
谢谢!
这应该适合你:
<?php
$arr = array(
array(30, 5, 6, 7, 8, 9, 2, 5),
array(50, 4, 8, 4, 4, 6, 9, 2)
);
$result = array();
foreach($arr[0] as $k => $v)
$result[$k] = array_sum(array_column($arr, $k));
print_r($result);
?>
输出:
Array ( [0] => 80 [1] => 9 [2] => 14 [3] => 11 [4] => 12 [5] => 15 [6] => 11 [7] => 7 )
编辑:
如果您的 php 版本低于 5.4,您可以使用这个简单的解决方法:
function arrayColumn(array $array, $column_key, $index_key=null){
if(function_exists('array_column ')){
return array_column($array, $column_key, $index_key);
}
$result = [];
foreach($array as $arr){
if(!is_array($arr)) continue;
if(is_null($column_key)){
$value = $arr;
}else{
$value = $arr[$column_key];
}
if(!is_null($index_key)){
$key = $arr[$index_key];
$result[$key] = $value;
}else{
$result[] = $value;
}
}
return $result;
}
(注意一定要用arrayColumn()
)
来自手动评论:http://php.net/manual/de/function.array-column.php#116301
这应该适用于像您的示例之一那样的数组($arr
是一个类似于您示例中的数组,为了简单起见,我没有在这里定义它):
$res = array();
foreach($arr as $value) {
foreach($value as $key => $number) {
(!isset($res[$key])) ?
$res[$key] = $number :
$res[$key] += $number;
}
}
print_r($res);