#php #arrays #merge
#php #массивы #объединить
Вопрос:
$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 '</pre>';
дает:
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:
array_walk_recursive($arr, function (amp;$value, $key, $replacements) {
if (isset($replacements[$key])) {
$value = $replacements[$key];
}
}, $arr2);
Обратите внимание, что при этом используется синтаксис PHP 5.3 .
Комментарии:
1. Тогда вы можете просто переписать это как обычное объявление функции или даже использовать
create_function
. См php.net/manual/en /… и php.net/array_walk_recursive