У меня есть два следующих массива, которые я пытаюсь рекурсивно объединить, чтобы не потерять данные, но я также не хочу, чтобы данные повторялись.
$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 полностью).