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',
  ),
)