unir - sumar 2 array php
php array_merge_recursive preservando claves numéricas (2)
La función array_replace_recursive()
parece ser lo que necesitas.
$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'',
// ),
// )
Simplemente me gustaría fusionar
$a = array("59745506"=>array("up" => 0,));
$b = array("59745506"=>array("text" => "jfrj"));
$c = array_merge_recursive_new($a, $b);
resultado:
Array
(
[0] => Array
(
[up] => 0
)
[1] => Array
(
[text] => jfrj
)
)
Resultado Esperado:
Array
(
[59745506] => Array
(
[up] => 0
[text] => jfrj
)
)
el segundo comentario en http://www.php.net/manual/en/function.array-merge-recursive.php está funcionando, es la mejor solución para mi caso (donde necesito combinar matrices con varias teclas numéricas, y con 2 niveles)?
otra solución sería implementarlo con array_map (function () ...
Su expectativa falla ya que la clave de $b
es numérica (!), Aunque la denotó como un literal de cadena (cf. PHP: Arrays -> Sintaxis ).
Creo que si hay o no una mejor solución depende de lo que necesita exactamente . Podría ser más simple que fusionar recursivamente:
1) ¿Está seguro de que cada valor dentro de las matrices $b
siempre será una matriz nuevamente?
2) ¿Qué se supone que sucederá si estas matrices comparten una clave común (es decir, si "text"
estaba nuevamente "up"
en su ejemplo)? ¿Seguir fusionando recursivamente o no?