当前位置: 首页 > 面试题库 >

如何对重复数据的数组值求和

方建明
2023-03-14
问题内容

我有一些具有相同ID值的数组,如下所示。

[
    {"ID":"126871","total":"200.00","currency":"USD","name":"John"},
    {"ID":"126872","total":"2000.00","currency":"Euro","name":"John"},
    {"ID":"126872","total":"1000.00","currency":"Euro","name":"John"},
    {"ID":"126872","total":"500.00","currency":"USD","name":"John"},
    {"ID":"126872","total":"1000.00","currency":"Euro","name":"John"},
]

如果ID值重复,则将相同的总和相加currency。对于currency相同的不同ID,无需求和total

这就是我想要的。

[
    {"ID":"126871","total":"200.00","currency":"USD","name":"John"},
    {"ID":"126872","total":"4000.00","currency":"Euro","name":"John"},
    {"ID":"126872","total":"500.00","currency":"USD","name":"John"}
]

我陷入上述问题。我已经尽力了。但是我得到了错误的结果。我非常感谢任何建议。


问题答案:

@Cloud我已根据您的要求提供了功能,感谢@MI对此总和部分进行了研究。

$array = array(
    array("ID"  => "126871","total"=>"200.00","currency"=>"USD","name"=>"John"),
    array("ID"  => "126872","total"=>"2000.00","currency"=>"Euro","name"=>"John"),
    array("ID"  => "126872","total"=>"1000.00","currency"=>"Euro","name"=>"John"),
    array("ID"  => "126872","total"=>"500.00","currency"=>"USD","name"=>"John"),
    array("ID"  => "126872","total"=>"1000.00","currency"=>"Euro","name"=>"John"),
);
echo "<pre>";
print_r($array);

function unique_multidim_array($array, $key,$key1,$addedKey) { 
    $temp_array = array(); 
    $i = 0; 
    $key_array = array(); 
    $key1_array = array();

    foreach($array as $val) { 
        if (!in_array($val[$key], $key_array) && !in_array($val[$key1], $key1_array)) { 
            $key_array[$i] = $val[$key]; 
            $key1_array[$i] = $val[$key1]; 
            $temp_array[$i] = $val; 
        }else{
            $pkey = array_search($val[$key],$key_array);
            $pkey1 = array_search($val[$key1],$key1_array);
            if($pkey==$pkey1){
                $temp_array[$pkey][$addedKey] += $val[$addedKey];
            }else{
                $key_array[$i] = $val[$key]; 
                $key1_array[$i] = $val[$key1]; 
                $temp_array[$i] = $val; 
            }
            // die;
        }
        $i++; 
    } 
    return $temp_array; 
}

$nArray = unique_multidim_array($array,"ID","currency","total");
// die;
print_r($nArray);
die;


 类似资料:
  • 我需要求一个对象数组中类似“value”的值之和。 样本输入 预期产量 我试过跟随,但没有达到预期效果

  • 我希望循环通过一个对象,并对数据进行一些更改。我不是100%如果我实际上处理一个对象或一个数组包含多个对象,所以任何帮助都很感激。 下面是我的目标: 提前致谢

  • 问题内容: 我有未排序的索引数组: 我也有一个相同长度的值数组: 我有期望值为零的数组: 现在,我想根据v在d中的索引将其添加到元素中。 如果我用普通的python做,我会这样: 这是丑陋且效率低下的。我该如何更改? 问题答案: 我们可以使用据称对这种累积加权计数非常有效的方法,所以这里有一个- 或者,使用输入参数,对于一般情况,当可以是任何数组,而我们想添加到该数组中时, 运行时测试 本节将本文

  • 我有一个名为Employees的数组列表,它存储Employees对象。每个员工都有姓、名、小时、工资、毛额、税和净额。我试图计算每个员工的工时、工资、毛工资、税金和净工资的总和。有没有办法从数组列表中提取对象的特定元素? 我试图通过用户的输入来计算总和,但是,它似乎不起作用。

  • 在JavaScript中,我生成了一个x个数组,所有数组由57个数字组成。我想计算数组中每个数字的平均值,作为一个数组的平均值,即: array1[0]array2[0]array3[0]…./阵列数=[0]的平均值 array1[1]阵列2[1]阵列3[1]…./阵列数=[1]的平均值 数组一数组二数组三数组二..../数组数量=平均值[2] 这是生成的数组数组的示例: 谁能给我一个例子,让我可

  • 问题内容: 我正在使用PHP中的一维数组。我想检测重复值的存在,然后计算重复值的数量并输出结果。例如,给定以下数组: 我想打印: 关于如何解决这个问题有什么建议吗? 谢谢。 麦克风 问题答案: 您可以使用array_count_values函数 将输出