Я просто хотел бы объединить
$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"
)? Продолжать слияние рекурсивно или нет?