PHP有没有函数可以实现,二维的索引数组相同键的值合并

运行环境

当前使用的 php/php-fpm 版本?

PHP 版本:7.3

问题描述?

如下:

$arr = [
    '3' => [
        '1211'
    ]
];
$brr = [
    '3' => [
        '222'
    ]
];

两个数组有相同的key是3,我想让里边的值合并为一个数组。
像这样

Array
(
    [3] => Array
        (
            [0] => 1211
            [1] => 222
        )
)

我想到这个函数array_merge_recursive()但是它只能合并关联数组,用于索引数组就会直接像array_merge()一样,重新索引不会合并
会得到这样的结果:

Array
(
    [0] => Array
        (
            [0] => 1211
        )
    [1] => Array
        (
            [0] => 222
        )
)

或者有没有可能只遍历或循环一次,因为俩数组都有可能为空,所以不能只循环其中一个。

倚南窗以寄傲,审容膝之易安
最佳答案

//示例
    function arrayAction(){
        $arr = [
            '3' => [
                '1211'
            ]
        ];
        $brr = [
            '3' => [
                '222'
            ]
        ];
        print_r($this->arrayMerge2D($arr,$brr));
        return false;
    }

    //二维数组合并
    function arrayMerge2D(...$arrays){
        //$bigArray=[];
        $bigArray=array_shift($arrays);//根据需求首个数组不再遍历
        foreach ($arrays as $array){
            foreach ($array as $key=>$item){
                $bigArray[$key]=array_merge($bigArray[$key]??[],$item);
            }
        }
        return $bigArray;
    }
1年前 评论
腹肌会有的 (楼主) 1年前
renxiaotu (作者) 1年前
腹肌会有的 (楼主) 1年前
讨论数量: 8

//示例
    function arrayAction(){
        $arr = [
            '3' => [
                '1211'
            ]
        ];
        $brr = [
            '3' => [
                '222'
            ]
        ];
        print_r($this->arrayMerge2D($arr,$brr));
        return false;
    }

    //二维数组合并
    function arrayMerge2D(...$arrays){
        //$bigArray=[];
        $bigArray=array_shift($arrays);//根据需求首个数组不再遍历
        foreach ($arrays as $array){
            foreach ($array as $key=>$item){
                $bigArray[$key]=array_merge($bigArray[$key]??[],$item);
            }
        }
        return $bigArray;
    }
1年前 评论
腹肌会有的 (楼主) 1年前
renxiaotu (作者) 1年前
腹肌会有的 (楼主) 1年前

foreach ($arr as $k => &$v) { if (isset($brr[$k])) { $v = array_merge($v, $brr[$k]); } }

print_r($arr);

1年前 评论
腹肌会有的 (楼主) 1年前
priority_cat (作者) 1年前
腹肌会有的 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!