Cómo eliminar elementos repetidos en un array PHP

Cómo eliminar elementos repetidos en un array PHP

Si en algún momento, programando, estás manejando arrays y necesitas eliminar los elementos repetidos del mismo, puedes hacerlo de forma rápida mediante una función nativa de PHP.

Dicha función es array_unique y esta se encarga de una vez al haberle pasado como parámetro un array indexado o asociativo, nos devuelve otro array sin elementos repetidos, es decir, con los elementos únicos del mismo, hace por decirlo así un filtrado de elementos repetidos.

 

Hagamos un par de ejemplos tanto con array asociativo como indexado.

En primer lugar, tenemos el siguiente array indexado:

$nombres = ['Luz', 'Jorge', 'Ana', 'Lorena', 'Paola', 'Luis', 'Xavier ', 'Jorge', 'Ana'];

print_r($nombres);

Resultado:

Array
(
    [0] => Luz
    [1] => Jorge
    [2] => Ana
    [3] => Lorena
    [4] => Paola
    [5] => Luis
    [6] => Xavier 
    [7] => Jorge
    [8] => Ana
)

Se puede observar como exiten elementos duplicados en este array, para eliminar esos elementos duplicados nos apoyaremos usando la función array_unique()  dentro de los parentesis se le pasara como argumento o parametro dicho array:

$nuevoArray = array_unique($nombres);

print_r($nuevoArray);

Resultado:

Array
(
    [0] => Luz
    [1] => Jorge
    [2] => Ana
    [3] => Lorena
    [4] => Paola
    [5] => Luis
    [6] => Xavier 
)

 

Como te puedes dar cuenta la función array_unique() nos hace con facilidad obtener un resultado limpio de elementos duplicados, de esta forma no se tiene que hacer un recorrido del mismo y hacer una comparación con cada uno de los elementos hacia todos los demás.

 

Segundo, en el caso de que se este tratando con array tipo asociativo esta función acturará de la misma manera que con el array indexado ya que solo realizará la comparación de los valores de cada elemento del array sin tener en cuenta su clave.

$arrayAsoc = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 1, 'e' =>'4', 'f' => 2, 'g' => 5] ;

print_r($arrayAsoc);

Resultado:

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
    [d] => 1
    [e] => 4
    [f] => 2
    [g] => 5
)


 

Al aplicar array_unique() :

print_r(array_unique($arrayAsoc));

el resultado será el siguiente
 

Array
(
    [a] => 1
    [b] => 2
    [c] => 3
    [e] => 4
    [g] => 5
)

 

Como ves, la función array_unique no tiene en cuenta las claves de los elementos en un array asociativo, sino que solamente se fija en los valores de los mismos, eliminando los repetidos.

Comentarios