2013-05-23 5 views
1

У меня есть два n-мерных массива, которые я хотел бы объединить. Я уже рассмотрел this question, однако он хорош только для слияния двухмерных массивов. Я пытаюсь выполнить одно и то же, за исключением двух n-мерных массивов.Слияние двух n-мерных массивов

Так, например:

массива 1:

Array (
    [''] => 'ID One' 
    ['foo'] => Array (
     [''] => 'ID Two' 
     ['bar'] => 'ID Three' 
    ) 
) 

Массив 2:

Array (
    ['foo'] => Array (
     ['bar'] => Array (
      ['baz'] => 'ID Four' 
     ) 
    ) 
    ['bax'] => 'ID Five' 
) 

Желаемая массив Результат:

Array (
    [''] => 'ID One' 
    ['foo'] => Array (
     [''] => 'ID Two' 
     ['bar'] => Array (
      [''] => 'ID Three' 
      ['baz'] => 'ID Four' 
     ) 
    ) 
    ['bax'] => 'ID Five' 
) 

Хотя это демонстрация что я пытаюсь g для достижения, когда он используется для некоторых веб-приложений, вполне возможно, что у него будет 10, возможно, 15 вложенных массивов. Итак, как объединить Array 1 и Array 2, чтобы сформировать желаемый результат массива?

+3

Не можете вы просто использовать 'array_merge_recursive'? – sroes

+0

Хорошо, теперь глупо сейчас ... – topherg

ответ

2

Попробуйте array_merge_recursive() или array_replace_recursive().

Если ни одна из этих функций делает то, что вы хотите, это все-таки легко сделать с помощью рекурсивной функции, например .:

function merge($a, $b) { 
    foreach ($b as $key => $value) { 
     if (!is_array($value) { 
      $a[$key] = $value; 
     } else if (isset($a[$key])) { 
      $a[$key] = merge($a[$key], $value); 
     } else { 
      $a[$key] = $value; 
     } 
    } 
    return $a; 
} 

$merged = merge($a, $b); 
Смежные вопросы