Array_merge_recursive дает мне повторяющиеся данные, как их удалить

У меня есть два следующих массива, которые я пытаюсь рекурсивно объединить, чтобы не потерять данные, но я также не хочу, чтобы данные повторялись.

$a = array(
   'group1' => array('names'=>array('g1name1', 'g1name2')),
   'group2' => array('names'=>array('g2name1'))
);

$b = array(
   'group1' => array('names'=>array('g1name1', 'g1name3'), 'extras'=>array('g1extra1')),
   'group3' => array('names'=>array('g3name1'))
);

Я использую array_merge_recursive ($ a, $ b); , который отлично работает для group2 и group3 , потому что они существуют в любом из $ a или $ b , но group1 вызывает у меня проблему, потому что у него есть некоторые повторяющиеся данные как в $ a, так и в $ b. Это то, что я получаю после рекурсивного слияния. Обратите внимание, что в именах g1name указано дважды, один раз из $ a и один раз из $ b.

'group1' => 
    array
      'names' => 
        array
          0 => string 'g1name1'
          1 => string 'g1name2'
          2 => string 'g1name1'
          3 => string 'g1name3'
      'extras' => 
        array
          0 => string 'g1extra1'
          1 => string 'g1extra2'
  'group2' => ....
  'group3' => ....

Я попробовал array_unique вот так array_unique (array_merge_recursive ($ a, $ b)) , но он дал мне странные результаты (не устраняет проблему с повторением и удаляет group2 и group3 полностью).

6
задан sameold 23 December 2011 в 17:10
поделиться