PHP-如果3个其他键值匹配,则匹配键值的总和

PHP-如果3个其他键值匹配,则匹配键值的总和,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个阵列,在几个国家有多年的总销售额。下面是阵列的小样本。一些国家的销售额以几种不同的货币计算,但现在已转换成同一种货币。现在我需要将年、月和国家值相同但仍保持相似结构的总销售额相加 如果[“年”]、[“月”]、[“国家”]的值匹配,那么我需要对[“总销售额”]的值求和,并保持相同的数组结构 我不知道从哪里开始。我确信其中涉及到一个或两个foreach循环 这是数组 以下是我想要的结果: 做点像 foreach($currentArray as $value){ $newArrayk

我有一个阵列,在几个国家有多年的总销售额。下面是阵列的小样本。一些国家的销售额以几种不同的货币计算,但现在已转换成同一种货币。现在我需要将年、月和国家值相同但仍保持相似结构的总销售额相加

如果[“年”]、[“月”]、[“国家”]的值匹配,那么我需要对[“总销售额”]的值求和,并保持相同的数组结构

我不知道从哪里开始。我确信其中涉及到一个或两个foreach循环

这是数组 以下是我想要的结果: 做点像

foreach($currentArray as $value){
    $newArraykey = $value["country"]."-".$value["Year"]."-".$value["month"]
    if(isset($newArray[$newArraykey])){
        $newArray[$newArraykey]["Total_Sales"] = $newArray[$newArraykey]["Total_Sales"] + $value["Total_Sales"];
    }else{
        $newArray[$newArraykey] = $value;
    }
}
$newArray类似于

array(4) {
  [NZ-2014-12]=>
  array(4) {
    ["Year"]=>
    string(4) "2014"
    ["Month"]=>
    string(2) "12"
    ["Country"]=>
    string(2) "NZ"
    ["Total_Sales"]=>
    float(13.75)
  }
  [US-2014-12]=>
  array(4) {
    ["Year"]=>
    string(4) "2014"
    ["Month"]=>
    string(2) "12"
    ["Country"]=>
    string(2) "US"
    ["Total_Sales"]=>
    string(9) "10.05"
  }
  [NZ-2015-1]=>
  array(4) {
    ["Year"]=>
    string(4) "2015"
    ["Month"]=>
    string(1) "1"
    ["Country"]=>
    string(2) "NZ"
    ["Total_Sales"]=>
    float(24.50)
  }
  [US-2015-1]=>
  array(4) {
    ["Year"]=>
    string(4) "2015"
    ["Month"]=>
    string(2) "1"
    ["Country"]=>
    string(2) "US"
    ["Total_Sales"]=>
    string(9) "6.00"
}

如果您不想要像country year month这样的键,它们使用
数组值($newArray)
这将返回与您想要的完全相同的数组。

PHP中的Google分组数组。这会让你开始。当你陷入困境时,请发回你的代码。你可以从这里得到帮助:我已经看过类似的东西,但无法让它正常工作。代码似乎没有把总销售额加起来。数组(4){[“NZ-2014-9”]=>float(13.75)[“US-2014-9”]=>string(9)“10.05”[“NZ-2015-9”]=>float(15.00)[“US-2015-9”]=>string(9)“6.00”}现在的代码检查中出现了一些愚蠢的错误。
foreach($currentArray as $value){
    $newArraykey = $value["country"]."-".$value["Year"]."-".$value["month"]
    if(isset($newArray[$newArraykey])){
        $newArray[$newArraykey]["Total_Sales"] = $newArray[$newArraykey]["Total_Sales"] + $value["Total_Sales"];
    }else{
        $newArray[$newArraykey] = $value;
    }
}
array(4) {
  [NZ-2014-12]=>
  array(4) {
    ["Year"]=>
    string(4) "2014"
    ["Month"]=>
    string(2) "12"
    ["Country"]=>
    string(2) "NZ"
    ["Total_Sales"]=>
    float(13.75)
  }
  [US-2014-12]=>
  array(4) {
    ["Year"]=>
    string(4) "2014"
    ["Month"]=>
    string(2) "12"
    ["Country"]=>
    string(2) "US"
    ["Total_Sales"]=>
    string(9) "10.05"
  }
  [NZ-2015-1]=>
  array(4) {
    ["Year"]=>
    string(4) "2015"
    ["Month"]=>
    string(1) "1"
    ["Country"]=>
    string(2) "NZ"
    ["Total_Sales"]=>
    float(24.50)
  }
  [US-2015-1]=>
  array(4) {
    ["Year"]=>
    string(4) "2015"
    ["Month"]=>
    string(2) "1"
    ["Country"]=>
    string(2) "US"
    ["Total_Sales"]=>
    string(9) "6.00"
}