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