Php 对特定键使用相同值的数组索引求和

Php 对特定键使用相同值的数组索引求和,php,arrays,Php,Arrays,我有以下数组: [0] => Array ( [id] => 1 [uid] => 50 [sum1] => 1 [sum2] => 2 ) [1] => Array ( [id] => 2 [uid] => 50 [sum1] => 2 [sum2] => 4

我有以下数组:

[0] => Array

    (
        [id] => 1
        [uid] => 50
        [sum1] => 1
        [sum2] => 2
       

    )

[1] => Array

    (
        [id] => 2
        [uid] => 50
        [sum1] => 2
        [sum2] => 4
       

    )
[2] => Array

    (
        [id] => 3
        [uid] => 51
        [sum1] => 3
        [sum2] => 5
       

    )
正如您所看到的,在某些索引上,[uid]是相同的。数组的长度和数据是动态的。 我需要做的是合并具有相同[uid]值的索引,并对其他键的值求和:

[0] => Array

    (
        [id] => 2
        [uid] => 50
        [sum1] => 3
        [sum2] => 6
       

    )
[1] => Array

    (
        [id] => 3
        [uid] => 51
        [sum1] => 3
        [sum2] => 5
       

    )
但就我个人而言,我不知道该怎么做


感谢您的帮助

你可以这样做

<?php
$mainArray = [ 
    0 => Array
    (
        'id' => 1,
        'uid' => 50,
        'sum1' => 1,
        'sum2' => 2
    ),
    1 => Array
    (
        'id' => 2,
        'uid' => 50,
        'sum1' => 2,
        'sum2' => 4
    ),
    2 => Array
    (
        'id' => 3,
        'uid' => 51,
        'sum1' => 3,
        'sum2' => 5
    )
];
$newArray=[];
foreach ($mainArray as $value) {
    if(!array_key_exists($value['uid'], $newArray)){
        // Store first time
        $newArray[$value['uid']] = $value;
    }else{
        // Already exist, then sum and replace it
        $newArray[$value['uid']]['id'] = $value['id'];
        $newArray[$value['uid']]['sum1'] += $value['sum1'];// Sum with previous value
        $newArray[$value['uid']]['sum2'] += $value['sum2'];// Sum with previous value
    }
}
$newArray = array_values($newArray);// Reset indexes, Start the array index with zero
print_r($newArray);// To see the output

我想你是对的。实际上,我用类似的方法解决了这个问题:

$sumArray = Array();
foreach ($array1 as $item){

        if(isset($sumArray[$item['uid']])){          
          $sumArray[$item['idPartener']]['sum1'] += $item['sum1'];
          $sumArray[$item['idPartener']]['sum2'] += $item['sum2'];

        }else{          
          $sumArray[$item['uid']] = Array(
            'id' => $item['id'],             
            'sum1' => $item['sum1'],
            'sum2' => $item['sum2'] ,
          );
        }

    }


谢谢大家的帮助

这回答了你的问题吗?创建一个新数组,在原始数组上迭代,为每个项目检查是否存在具有相同uid的对象(使用数组列和数组搜索)。。。如果存在增量值,则附加。不难。实际上,B001并不难,因为在这个例子中,所有的idex都要求和,或者在我的例子中,我只需要求和匹配的键。@SalmanA,这是个好主意。我会尽力实现这一点。谢谢
$sumArray = Array();
foreach ($array1 as $item){

        if(isset($sumArray[$item['uid']])){          
          $sumArray[$item['idPartener']]['sum1'] += $item['sum1'];
          $sumArray[$item['idPartener']]['sum2'] += $item['sum2'];

        }else{          
          $sumArray[$item['uid']] = Array(
            'id' => $item['id'],             
            'sum1' => $item['sum1'],
            'sum2' => $item['sum2'] ,
          );
        }

    }