猿问

如何通过php中的键值合并两个多维数组?

我有两个数组


$arr1 = [

    ['month' => 1], 

    ['month' => 2], 

    ['month' => 3], 

    ['month' => 4]

];


$arr2 = [

    ['month' => 3, 'info' => 'Alpha'], 

    ['month' => 4, 'info' => 'Beta']

];

我曾尝试array_merge与array_merge_recursive我的预期均未合并数组。


预期合并:


$arr3 = [

    ['month' => 1], 

    ['month' => 2], 

    ['month' => 3, 'info' => 'Alpha'], 

    ['month' => 4, 'info' => 'Beta']

];

实际array_merge_recursive是:


$arr3 = array_merge_recursive($arr2, $arr1);


$arr3 = [

    ['month' => 3, 'info' => 'Alpha'], 

    ['month' => 4, 'info' => 'Beta']

    ['month' => 1], 

    ['month' => 2], 

    ['month' => 3], 

    ['month' => 4]

];


牧羊人nacy
浏览 180回答 3
3回答

泛舟湖上清波郎朗

在这种情况下,我遍历数组并构建所需的输出。$output = [];$allMerged = array_merge($arr1, $arr2);array_walk($allMerged,   function($item, $key) use (&$output) {    print_r($item);    if ( array_key_exists($item['month'], $output) ) {        if ( isset($item['info']) ) {            $output[$item['month']]['info'] = $item['info'];        } else {            $output[$item['month']] = $item;        }    } else {        $output[$item['month']] = $item;    }});print_r($output);

哔哔one

你可以试试下面的代码$newArr = [];foreach($arr1 as $row) {    $newArr[$row['month']] = $row;}foreach($arr2 as $arr) {    if(array_key_exists($arr['month'], $newArr)) {        $newArr[$arr['month']]['info'] = $arr['info'];    }} print_r($newArr);
随时随地看视频慕课网APP
我要回答