gpt4 book ai didi

PHP - 对不同的数组求和

转载 作者:可可西里 更新时间:2023-11-01 13:25:32 24 4
gpt4 key购买 nike

我一整天都在尝试根据值对以下数组求和,并且只获取不同的值。

这是我的输入数组:

[
{
"commoditycodes": "6204.4400",
"statisticalvalue": 1152.6,
"cvr": "DK35425950"
},
{
"commoditycodes": "6204.4400",
"statisticalvalue": 542.4,
"cvr": "DK35425950"
},
{
"commoditycodes": "6104.4300",
"statisticalvalue": 1827,
"cvr": "DK35425950"
},
{
"commoditycodes": "6114.3000",
"statisticalvalue": 5211.36,
"cvr": "DK37968552"
},
{
"commoditycodes": "6114.3000",
"statisticalvalue": 798.64,
"cvr": "DK99999999"
}
]

我正在尝试“收集”所有具有相同 cvr 值的数组,但仍然根据commoditycodes 显示不同的数组。像这样:

{
"commoditycodes": "6204.4400",
"statisticalvalue": 1695,
"cvr": "DK35425950"
},
{
"commoditycodes": "6104.4300",
"statisticalvalue": 1827,
"cvr": "DK35425950"
},
{
"commoditycodes": "6114.3000",
"statisticalvalue": 5211.36,
"cvr": "DK37968552"
},
{
"commoditycodes": "6114.3000",
"statisticalvalue": 798.64,
"cvr": "DK99999999"
}

]

如您所见,从输入中,我的数组的前两个结果有:

  • 相同的商品代码
  • 相同的 CVR 值

然后我们对统计值求和。

第三个结果与前两个结果具有相同的 CVR 值,但是 commoditycode 值不同 - 因此这是一个唯一值。

我的数组的第四个和第五个元素也是唯一的。

基本上,我试图对 statisticalvalue 求和,其中:

  • CVR 值相同
  • 商品编码相同

我试过如下:

$result = [];

foreach ($array as $val) {
//Not a duplicate cvr code
if (!isset($result[$val['cvr']])) {
$result[$val['cvr']] = $val;
//Duplicate cvr code.
} else {
$result[$val['cvr']]['statisticalvalue'] += $val['statisticalvalue'];

}
}

但是下面的返回,它只采用唯一的 cvr 值 - 而不是 commoditycodes:

[
{
"commoditycodes": "6104.6300",
"statisticalvalue": 68701.56,
"cvr": "DK35425950"
},
{
"commoditycodes": "6104.6300",
"statisticalvalue": 21108.95,
"cvr": "DK37968552"
},
{
"commoditycodes": "6114.3000",
"statisticalvalue": 798.64,
"cvr": "DK99999999"
}
]

我完全不知道如何检查这个?

最佳答案

创建一个具有复杂索引的数组 $val['cvr'].'|'.$val['commoditycodes']

$result = [];

foreach ($array as $val) {
$index = $val['cvr'].'|'.$val['commoditycodes'];
if (!isset($result[$index])) {
$result[$index] = $val;
//Duplicate
} else {
$result[$index]['statisticalvalue'] += $val['statisticalvalue'];
}
}

如果你想用数字索引制作结果数组,在循环之后添加:

$result = array_values($result);

关于PHP - 对不同的数组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54404443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com