Php 如何将两个阵列合并为一个阵列?
我有两个数组,你们会看到下面的,我想把主题合并成一个。前两个数组具有一个和和一个月的子数组。结果数组(第三个)必须具有同一月份前两个数组的总和Php 如何将两个阵列合并为一个阵列?,php,arrays,Php,Arrays,我有两个数组,你们会看到下面的,我想把主题合并成一个。前两个数组具有一个和和一个月的子数组。结果数组(第三个)必须具有同一月份前两个数组的总和 array:3 [ 0 => array:2 [ "sum" => 179.0 "month" => "2016-01" ] 1 => array:2 [ "sum" => 34.0 "month" => "2016-02" ] 2 => array:2 [
array:3 [
0 => array:2 [
"sum" => 179.0
"month" => "2016-01"
]
1 => array:2 [
"sum" => 34.0
"month" => "2016-02"
]
2 => array:2 [
"sum" => 67.0
"month" => "2016-03"
]
]
array:2 [
0 => array:2 [
"sum" => 143.25
"month" => "2016-01"
]
1 => array:2 [
"sum" => 479.0
"month" => "2016-03"
]
]
Total:
array:3 [
0 => array:3 [
"sum" => 313.25
"month" => "2016-01"
]
1 => array:2 [
"sum" => 34.0
"month" => "2016-02"
]
2 => array:2 [
"sum" => 546.0
"month" => "2016-03"
]
]
我尝试的是:
for($i=0;$i<count($com1);$i++){
for ($j=0; $j < count($com2); $j++) {
if($com1[$i]['month'] == $com2[$j]['month']){
$total = $com1[$i]['sum']+$com2[$j]['sum']
}
}
}
对于($i=0;$i请尝试以下操作:
$com1 = [
0 => [
'sum' => 179.0,
'month' => '2016-01'
],
1 => [
'sum' => 34.0,
'month' => '2016-02'
],
2 => [
'sum' => 67.0,
'month' => '2016-03'
]
];
$com2 = [
0 => [
'sum' => 143.25,
'month' => '2016-01'
],
1 => [
'sum' => 479.0,
'month' => '2016-03'
]
];
$total = [];
foreach ($com1 as $data) {
$total[$data['month']] = $data;
}
foreach ($com2 as $data) {
if (!isset($total[$data['month']])) {
$total[$data['month']] = [
'sum' => 0,
'month' => $data['month']
];
}
$total[$data['month']]['sum'] += $data['sum'];
}
print_r($total);
以下是生成非关联数组的解决方案(如您在问题中所述):
当$data1和$data2为:
$data1 = array (
array(
"sum" => 179.0,
"month" => "2016-01"
),
array(
"sum" => 34.0,
"month" => "2016-02"
),
array(
"sum" => 67.0,
"month" => "2016-03"
)
);
$data2 = array (
array(
"sum" => 143.25,
"month" => "2016-01"
),
array(
"sum" => 479.0,
"month" => "2016-03"
)
);
那么输出是:
array (
0 =>
array (
'sum' => 322.25,
'month' => '2016-01',
),
1 =>
array (
'sum' => 34,
'month' => '2016-02',
),
2 =>
array (
'sum' => 546,
'month' => '2016-03',
),
)
我忍不住注意到,这里的输出数组是一个关联数组,而问题中请求的是一个序列数组。
array (
0 =>
array (
'sum' => 322.25,
'month' => '2016-01',
),
1 =>
array (
'sum' => 34,
'month' => '2016-02',
),
2 =>
array (
'sum' => 546,
'month' => '2016-03',
),
)