Объединить два массива с одним и тем же ключом, но с разной глубиной? - PullRequest
1 голос
/ 19 октября 2011
<code>$arr = array('one' => array('one_1' => array('one_2' => '12')), 'two', 'three');
$arr2 = array('one_2' => 'twelve');

$merge = array_merge($arr, $arr2);

print '<pre>';
var_dump($merge);
print '
';

дает:

  array(4) {
  ["one"]=>
  array(1) {
    ["one_1"]=>
    array(1) {
      ["one_2"]=>
      string(2) "12"
    }
  }
  [0]=>
  string(3) "two"
  [1]=>
  string(5) "three"
  ["one_2"]=>
  string(6) "twelve"
}

Я хочу заменить значение ключа one_2 в первом массиве значением этого же ключа во втором массиве.Таким образом, результат будет:

array(4) {
  ["one"]=>
  array(1) {
    ["one_1"]=>
    array(1) {
      ["one_2"]=>
      string(2) "twelve"
    }
  }
  [0]=>
  string(3) "two"
  [1]=>
  string(5) "three"
}

1 Ответ

1 голос
/ 19 октября 2011
array_walk_recursive($arr, function (&$value, $key, $replacements) {
    if (isset($replacements[$key])) {
        $value = $replacements[$key];
    }
}, $arr2);

Обратите внимание, что здесь используется синтаксис PHP 5.3+.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...