为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
牧羊人nacy 2021-06-18 13:04:52
我有两个数组$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]];
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超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);


查看完整回答
反对 回复 2021-06-25
?
哔哔one

TA贡献1854条经验 获得超8个赞

你可以试试下面的代码


$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);


查看完整回答
反对 回复 2021-06-25
  • 3 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信