如何对多维数组中的所有列值进行求和?

如何对多维数组中的所有列值进行求和?

如何通过关联键添加所有列值?请注意[gozhi]关键是动态.

输入数组:

Array
(
    [0] => Array
        (
            [gozhi] => 2
            [uzorong] => 1
            [ngangla] => 4
            [langthel] => 5
        )

    [1] => Array
        (
            [gozhi] => 5
            [uzorong] => 0
            [ngangla] => 3
            [langthel] => 2
        )

    [2] => Array
        (
            [gozhi] => 3
            [uzorong] => 0
            [ngangla] => 1
            [langthel] => 3
        )
)

预期结果:

Array
(
    [gozhi] => 10
    [uzorong] => 1
    [ngangla] => 8
    [langthel] => 10
)


犯罪嫌疑人X
浏览 1349回答 3
3回答

拉风的咖菲猫

你可以用array_walk_recursive()为您的问题找到一个通用的解决方案(当每个内部数组可能有唯一的键时).$final = array();array_walk_recursive($input, function($item, $key) use (&$final){     $final[$key] = isset($final[$key]) ?  $item + $final[$key] : $item;});例举array_walk_recursive()一般情况下还有,因为PHP 5.5您可以使用array_column()函数以实现所需的结果。准确的钥匙, [gozhi],例如:array_sum(array_column($input, 'gozhi'));例举array_column()用于指定的密钥如果您想要得到所有内部数组的总和,则使用相同的键(你发布的预期结果),你可以这样做(请记住,第一个内部数组必须具有与其他数组相同的结构。) :$final = array_shift($input);foreach ($final as $key => &$value){    $value += array_sum(array_column($input, $key));}    unset($value);例举array_column()如果所有内部数组都有相同的键如果您想要一个通用的解决方案,使用array_column()然后,首先您可以考虑得到所有唯一的键,然后得到每个键的和:$final = array();foreach($input as $value)     $final = array_merge($final, $value);foreach($final as $key => &$value)     $value = array_sum(array_column($input, $key));unset($value);例举array_column()一般情况下

慕斯709654

下面是一个类似于另外两个方案的解决方案:$acc = array_shift($arr);foreach ($arr as $val) {     foreach ($val as $key => $val) {         $acc[$key] += $val;     }}但是这不需要检查数组键是否已经存在,也不需要抛出通知。
打开App,查看更多内容
随时随地看视频慕课网APP