php - 合并2个没有重复键的数组

标签 php arrays

我有两个如下所示的数组,想要将它们合并在一起,而不是将重复的键放入新数组中。

$array1:

Array
(
[0] => Array
    (
        [a] => Array
            (
                [p] => Array
                    (
                        [a] => 1
                    )

            )

        [a/s] => Array
            (
                [p] => Array
                    (
                        [o] => 1
                    )

            )

        [a/p] => Array
            (
                [p] => Array
                    (
                        [w] => 1
                        [e] => 1
                        [d] => 1
                    )

            )

        [a/u] => Array
            (
                [p] => Array
                    (
                        [w] => 1
                        [e_a] => 1
                        [d_a] => 1
                    )
            )
    )
)

$array2:

Array
(
[0] => Array
    (
        [a/x] => Array
            (
                [p] => Array
                    (
                        [a] => 1
                    )

            )

        [a/s] => Array
            (
                [p] => Array
                    (
                        [o] => 1
                    )

            )

        [a/p] => Array
            (
                [p] => Array
                    (
                        [w] => 1
                        [e] => 1
                        [d] => 1
                    )

            )

        [a/u] => Array
            (
                [p] => Array
                    (
                        [w] => 1
                        [e_a] => 1
                        [d_a] => 1
                    )
            )
    )
)


$result = array_merge_recursive($array1, $array2);

$结果:

Array
(
[0] => Array
    (
        [a] => Array
            (
                [p] => Array
                    (
                        [a] => 1
                    )
            )

        [a/s] => Array
            (
                [p] => Array
                    (
                        [o] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )
                    )
            )

        [a/p] => Array
            (
                [p] => Array
                    (
                        [w] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )

                        [e] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )

                        [d] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )
                    )
            )

        [a/u] => Array
            (
                [p] => Array
                    (
                        [w] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )

                        [e_a] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )

                        [d_a] => Array
                            (
                                [0] => 1
                                [1] => 1
                            )
                    )
            )

        [a/x] => Array
            (
                [p] => Array
                    (
                        [a] => 1
                    )
            )
    )
)

我该如何让它看起来像这样?

Array
(
[0] => Array
    (
        [a] => Array
            (
                [p] => Array
                    (
                        [a] => 1
                    )

            )

        [a/s] => Array
            (
                [p] => Array
                    (
                        [o] => 1

                    )

            )

        [a/p] => Array
            (
                [p] => Array
                    (
                        [w] => 1
                        [e] => 1
                        [d] => 1
                    )

            )

        [a/u] => Array
            (
                [p] => Array
                    (
                        [w] => 1
                        [e_a] => 1
                        [d_a] => 1
                    )
            )

        [a/x] => Array
            (
                [p] => 1
            )
    )
)

我是否以错误的方式处理这个问题,或者有什么方法可以解决这个问题?欢迎举例!

谢谢

最佳答案

function array_merge_recursive_unique($array1, $array2) {
  if (empty($array1)) return $array2; //optimize the base case

  foreach ($array2 as $key => $value) {
    if (is_array($value) && is_array(@$array1[$key])) {
      $value = array_merge_recursive_unique($array1[$key], $value);
    }
    $array1[$key] = $value;
  }
  return $array1;
}

关于php - 合并2个没有重复键的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4137140/

相关文章:

php - 动态 WordPress 安装、nginx、varnish、memcached、混合的理想设置...

php - 使用 PHP 验证电子邮件

c++ - OpenCV cv::Mat 导致潜在的内存泄漏与 std::vector

objective-c - 我可以使用 NSMutableArray 分配数组大小吗?

php - Controller 中的 Laravel 哈希密码

php - CodeIgniter 上没有模型对象的数据库查询

php - MySQL 中的浮点值本身

arrays - Swift:追加到字典中随机返回

javascript - chrome....onBeforeRequest...() URL 列表未按预期运行

c++ - 访问类中定义的数组的元素 (C++)