php array_merge_recursive сохранение цифровых клавиш

Я просто хотел бы объединить

$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 ) ) 

второй комментарий в http://www.php.net/manual/en/function.array-merge-recursive.php работает, это лучшее решение для моего случая (где мне нужно объединить массивы с несколькими числовыми ключами, и с 2 уровнями)?

другим обходным решением было бы реализовать его с помощью array_map (function () …

Функция 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" )? Продолжать слияние рекурсивно или нет?