如何在php中使用union 2多维数组?

如何在php中使用union 2多维数组?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有两个多维数组。我需要这些数组的并集。 也许有一个PHP数组函数可以做到这一点。我用array\u replace(),array\u merge()尝试了不同的方法,但我想不出来。数组的长度不是固定的。这两个阵列是: $a = array( array( 'division'=> 'Dhaka', 'A'=> 0, 'B'=> 0, 'C'=> 0, 'D'=> 0 ), array( 'divisio

我有两个多维数组。我需要这些数组的并集。 也许有一个PHP数组函数可以做到这一点。我用
array\u replace()
array\u merge()
尝试了不同的方法,但我想不出来。数组的长度不是固定的。这两个阵列是:

$a = array(
  array(
    'division'=> 'Dhaka',
    'A'=> 0,
    'B'=> 0,
    'C'=> 0,
    'D'=> 0
  ),
  array(
    'division'=> 'Chittagong',
    'A'=> 0,
    'B'=> 0,
    'C'=> 0,
    'D'=> 0
  ),
  array(
    'division'=> 'Rajshahi',
    'A'=> 0,
    'B'=> 0,
    'C'=> 0,
    'D'=> 0
  ),
  array(
    'division'=> 'Mymensingh',
    'A'=> 0,
    'B'=> 0,
    'C'=> 0,
    'D'=> 0
  )
);
$b = array(
  array("division"=> "Dhaka", "A"=> 5, "B"=> 8),
  array("division"=> "Rajshahi", "A"=> 10, "C"=> 2)
);
结果应该是:

$a = array(
      array(
        'division'=> 'Dhaka',
        'A'=> 5, //after union
        'B'=> 8, //after union
        'C'=> 0,
        'D'=> 0
      ),
      array(
        'division'=> 'Chittagong',
        'A'=> 0,
        'B'=> 0,
        'C'=> 0,
        'D'=> 0
      ),
      array(
        'division'=> 'Rajshahi',
        'A'=> 10, //after union
        'B'=> 0, //after union
        'C'=> 2,
        'D'=> 0
      ),
      array(
        'division'=> 'Mymensingh',
        'A'=> 0,
        'B'=> 0,
        'C'=> 0,
        'D'=> 0
      )
    );

因为它是多维数组,所以需要递归替换;但您还需要相同的字符串索引。如果
分区
是唯一的,则使用该分区:

$a = array_replace_recursive(array_column($a, null, 'division'),
                             array_column($b, null, 'division'));
如果要返回整数索引,请执行以下操作:

$a = array_values(array_replace_recursive(array_column($a, null, 'division'),
                                          array_column($b, null, 'division')));

如果
$a
中的子数组有值怎么办?
$b
中的值是否始终优先?或者我们是否在
$a
中保留任何非零值?您是否尝试过
$a=array\u replace\u recursive($a,$b)