Hay más de una manera de eliminar un elemento de un array en PHP. En este artículo vamos a explicar cómo eliminar uno o múltiples elementos de un array usando los métodos unset()
y array_diff()
Eliminando un elemento de un array
La mejor manera para eliminar un elemento simple de un array es con el método unset()
. Esta función se encarga de destruir las variables especificadas. Para eliminar un elemento de un array con la función unset()
necesitas saber la posición del elemento (el index) que quieres eliminar.
Ejemplo:
unset($array[2]);
Esto eliminará el elemento posicionado en el index 2.
Otro ejemplo:
$array = [0 => "hola", 1 => "adios", 2 => "qué tal?"];
unset($array[1]);
Salida:
[
[0] => hola
[2] => qué tal?
]
Cómo puedes ver en el ejemplo anterior, destruye el elemento que corresponde al índice indicado y no cambia el resto de índices. Es decir, el 2 no pasa a ser el 1, se mantiene en el 2.
Para reindexar de nuevo el array puedes usar la función array_values()
. De esta manera reordenarás el array con sus índices.
Ejemplo:
array_values($array)
Salida:
[
[0] => hola
[1] => qué tal?
]
Eliminanto múltiples elementos en un array
Si quieres eliminar múltiples elementos de un array sin tener que ir uno a uno con la función unset()
, puedes usar la función array_diff()
.
La función array_diff()
compara dos arrays y devuelve los valores que no coincidan en los arrays. Para eliminar múltiples valores usando esta función necesitarás saber el valor del elemento.
Ejemplo:
$array = [0 => "hola", 1 => "adios", 2 => "qué tal?", 3 => "qué tal?"];
$array = array_diff($array, ["hola", "qué tal?"]);
Salida:
[
[1] => adiós
]
Cómo has podido ver, hemos comparado el array original con un array con los elementos «a» y «qué tal?» y al coincidir estos dos, la función nos devuelve el elemento que no coincide y lo guardamos en array.
De estas dos maneras sencillas y rápidas podrás eliminar elementos de un array y reordenar sus índices para que no quede ningún salto entre una posición y otra.