Dos formas de fusionar arreglos en PHP

Dos formas de fusionar arreglos en PHP — Amit Merchant — Un blog sobre PHP, JavaScript y más

 

Si es un desarrollador de PHP experimentado, debe haberse encontrado con la necesidad de fusionar dos o más matrices en PHP. Y la forma correcta de hacerlo es usar el array_merge() Una función.

Pero, hay otra forma de hacer esto que discutiré más adelante en este artículo.

Primero veamos cómo puede fusionar dos matrices en PHP usando el array_merge() Una función.

Índice
  1. Él array_merge() Una función
  2. La Union (+) operador
  3. Trampas
    1. matrices asociativas
    2. Tablas indexadas
  4. Conclusión

Él array_merge() Una función

Él array_merge() La función es una función PHP incorporada que se utiliza para fusionar una o más matrices. Toma un número arbitrario de matrices como argumentos y devuelve una nueva matriz. La nueva matriz contiene los elementos de la primera matriz seguidos de los elementos de la segunda matriz y así sucesivamente.

Así es como puede usar el array_merge() Una función.

$first = ['item1', 'item2'];
$second = ['item3', 'item4'];

$merged = array_merge($first, $second);

var_dump($merged);
/*
array(4) {
  [0]=>
  string(1) "item1"
  [1]=>
  string(1) "item2"
  [2]=>
  string(1) "item3"
  [3]=>
  string(1) "item4"
}

Como puedes ver, el array_merge() La función devuelve una nueva matriz que contiene los elementos de la primera matriz seguidos de los elementos de la segunda matriz.

Aquí se explica cómo fusionar matrices asociativas usando array_merge() Una función.

$first = ['item1' => 'value1', 'item2' => 'value2'];
$second = ['item3' => 'value3', 'item4' => 'value4'];

$merged = array_merge($first, $second);

var_dump($merged);
/*
array(4) {
  ["item1"]=>
  string(1) "value1"
  ["item2"]=>
  string(1) "value2"
  ["item3"]=>
  string(1) "value3"
  ["item4"]=>
  string(1) "value4"
}
*/

La Union (+) operador

Él + (también llamado operador de unión) es otra forma de fusionar dos o más matrices en PHP. Funciona de manera similar a array_merge() función pero no exactamente igual.

Toma un número arbitrario de matrices como argumentos y devuelve una nueva matriz. La nueva matriz contiene los elementos de la primera matriz seguidos de los elementos de la segunda matriz y así sucesivamente.

Así es como puede usar el + operador.

$first = ['item1' => 'value1', 'item2' => 'value2'];
$second = ['item3' => 'value3', 'item4' => 'value4'];

$merged = $first + $second;

var_dump($merged);
/*
array(4) {
  ["item1"]=>
  string(1) "value1"
  ["item2"]=>
  string(1) "value2"
  ["item3"]=>
  string(1) "value3"
  ["item4"]=>
  string(1) "value4"
}
*/

Como puedes ver, el + devuelve una nueva matriz que contiene los elementos de la primera matriz seguidos de los elementos de la segunda matriz.

Trampas

En la superficie se podría pensar que + el operador funciona de manera similar al operador array_merge() y eso es cierto hasta cierto punto, pero aquí hay algunas diferencias clave que debe tener en cuenta.

matrices asociativas

  • Él array_merge La función sobrescribirá los valores de la primera matriz con los valores de la segunda matriz si las claves son las mismas.
  • Mientras que la + El operador no sobrescribirá los valores de la primera matriz con los valores de la segunda matriz si las claves son las mismas.

Compruebe el ejemplo a continuación.

$first = ['item1' => 'value1', 'item2' => 'value2'];
$second = ['item1' => 'value3', 'item4' => 'value4'];

$merged = array_merge($first, $second);
$unionMerge = $first + $second;

var_dump($merged);
/*
array(3) {
  ["item1"]=>
  string(6) "value3"
  ["item2"]=>
  string(6) "value2"
  ["item4"]=>
  string(6) "value4"
}
*/

var_dump($unionMerge);
/*
array(3) {
  ["item1"]=>
  string(6) "value1"
  ["item2"]=>
  string(6) "value2"
  ["item4"]=>
  string(6) "value4"
}
*/

Como puedes ver, el array_merge() La función sobrescribe los valores de la primera matriz con los valores de la segunda matriz si las claves son las mismas. Mientras que la + El operador no sobrescribe los valores de la primera matriz con los valores de la segunda matriz si las claves son las mismas.

Así que si quieres el mismo tipo de comportamiento que el array_merge() funcionar con el + operador en el ejemplo anterior, puede hacerlo invirtiendo el orden de las matrices de esta manera.

$reverseUnionMerge = $second + $first;

var_dump($reverseUnionMerge);
/*
array(3) {
  ["item1"]=>
  string(6) "value3"
  ["item4"]=>
  string(6) "value4"
  ["item2"]=>
  string(6) "value2"
}
*/

Tablas indexadas

Cuando trabaje con arreglos indexados, tenga en cuenta que el + ignora por completo la segunda matriz y devuelve la primera matriz tal como está.

Mientras que la array_merge() La función fusiona las dos matrices y devuelve una nueva matriz.

Compruebe el ejemplo a continuación.

$first = [1, 2, 3];
$second = [3, 4, 5];
$third = [6];

$merged = array_merge($first, $second, $third);
$unionMerge = $first + $second + $third;

var_dump($merged);
/*
array(7) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(3)
  [4]=>
  int(4)
  [5]=>
  int(5)
  [6]=>
  int(6)
}
*/

var_dump($unionMerge);
/*
array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}
*/

Como puedes ver, el + ignora por completo la segunda matriz y la tercera matriz y devuelve la primera matriz tal como está. Mientras que la array_merge() La función fusiona todas las matrices y devuelve una nueva matriz.

Conclusión

En este artículo, has descubierto la array_merge() función y la + operador en PHP. También aprendiste las diferencias entre los dos y cómo usarlos. Por lo tanto, puede elegir el que se adapte a sus necesidades.

Si quieres conocer otros artículos parecidos a Dos formas de fusionar arreglos en PHP puedes visitar la categoría Código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas