Supongamos que tengo una matriz asociativa con claves que son cadenas alfabéticas, y si fusiono algo con esta matriz, se fusionará correctamente sin reindexar como
$arr1 = array('john'=>'JOHN', 'marry'=>'Marry'); $arr1 = array_merge(array('78'=>'Angela'),$arr1); print_r($arr1);entonces esto fusionará correctamente el nuevo componente con la matriz y su salida será
Array ( [0] => Angela [john] => JOHN [marry] => Marry )Pero cuando probé lo mismo como esto
$arr1 = array('34'=>'JOHN', '04'=>'Marry'); $arr1 = array_merge(array('78'=>'Angela'),$arr1); print_r($arr1);entonces su salida es así
Array ( [0] => Angela [1] => JOHN [04] => Marry )¿Alguien puede describir este escenario?... También quiero que mi matriz sea así después de la fusión...
Array ( [78] => Angela [34] => JOHN [04] => Marry )¿Cómo puedo lograr eso?
según la definición, array_merge reindexará los índices numéricos. una cadena con un valor numérico también es un índice numérico.
Para evitar este comportamiento, concatene las matrices usando $arr1+$arr2
No necesita usar array_merge() ya que simplemente puede agregar las matrices:
$arr1 = [ '10' => 'Angela', 'john' => 'JOHN', 'marry' => 'Marry', ]; $arr2 = [ '78' => 'Angela' ]; $arr3 = $arr2 + $arr1;array_merge() - ... los valores en la matriz de entrada con claves numéricas se volverán a numerar con claves incrementales a partir de cero en la matriz de resultados.