рекурсивное сохранение числовых ключей слияния массивов php
Я просто хотел бы объединить
$a = array("59745506"=>array("up" => 0,));
$b = array("59745506"=>array("text" => "jfrj"));
$c = array_merge_recursive_new($a, $b);
результат:
Array
(
[0] => Array
(
[up] => 0
)
[1] => Array
(
[text] => jfrj
)
)
ожидаемый результат:
Array
(
[59745506] => Array
(
[up] => 0
[text] => jfrj
)
)
2-й комментарий в http://www.php.net/manual/en/function.array-merge-recursive.php работает, это лучшее решение для моего случая (где мне нужно объединить массивы с несколькими цифровыми ключами и с 2 уровнями)?
другим обходным путем было бы реализовать его с помощью array_map (function ()...
2 ответов
на array_replace_recursive()
функция выглядит так, как вам нужно.
$a = array("59745506" => array("up" => 0,));
$b = array("59745506" => array("text" => "jfrj"));
$c = array_replace_recursive($a, $b);
var_export($c);
// array (
// 59745506 =>
// array (
// 'up' => 0,
// 'text' => 'jfrj',
// ),
// )
ваше ожидание терпит неудачу как ключ $a
и $b
числовой(!), хотя вы обозначили его как строковый литерал (см. PHP: массивы - > синтаксис).
Я думаю, есть ли лучшее решение зависит от того, что вы ровно нужно. Это может быть проще, чем рекурсивное слияние:
1) Вы уверены, что каждое значение внутри $a
и $b
массивы всегда будут массивом снова?
2) что предполагается, что это произойдет, если эти массивы имеют общий ключ (т. е. если "text"
снова "up"
в вашем примере)? Продолжать слияние рекурсивно или нет?