Portada » Lenguaje PHP » Eliminar un elemento de una matriz en PHP

Eliminar un elemento de una matriz en PHP

Hay diferentes formas de eliminar un elemento de matriz, donde algunas son más útiles para algunas tareas específicas que otras.

Eliminar un elemento de una matriz en PHP

Si desea eliminar solo un elemento de la matriz, puede usar unset()o alternativamente \array_splice().

Si conoce el valor y no conoce la clave para eliminar el elemento, puede usar \array_search()para obtener la clave. Esto solo funciona si el elemento no ocurre más de una vez, ya que \array_searchdevuelve solo el primer acierto.

Eliminar un elemento de una matriz en PHP
Eliminar un elemento de una matriz en PHP

a) unset()

Tenga en cuenta que cuando use unset()las claves de matriz no cambiarán. Si desea volver a indexar las claves, puede usar \array_values()después unset(), lo que convertirá todas las claves en claves enumeradas numéricamente a partir de 0.

Código:

$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
// ↑ Clave que desea eliminar

Salida:

[
[0] => a
[2] => c
]

b) Método array_splice()

Si usa, \array_splice()las claves se volverán a indexar automáticamente, pero las claves asociativas no cambiarán, a diferencia de \array_values(), que convertirá todas las claves en claves numéricas.

\array_splice()necesita el desplazamiento , no la clave , como segundo parámetro.

Código:

$array = [0 => "a", 1 => "b", 2 => "c"];
array_splice($array, 1, 1);
print_r($array);
                  // ↑ Desplazamiento que desea eliminar

Salida:

[
[0] => a
[1] => c
]

array_splice(), lo mismo que unset(), toma la matriz por referencia. No asigna los valores de retorno de esas funciones a la matriz.

Eliminar varios elementos de la matriz

Si desea eliminar varios elementos de la matriz y no desea llamar unset()o \array_splice()varias veces, puede usar las funciones \array_diff()o \array_diff_key()dependiendo de si conoce los valores o las claves de los elementos que desea eliminar.

a) Método array_diff()

Si conoce los valores de los elementos de la matriz que desea eliminar, puede usar \array_diff(). Como antes unset(), no cambiará las claves de la matriz.

Código:

$array = [0 => "a", 1 => "b", 2 => "c", 3 => "c"];
$array = \array_diff($array, ["a", "c"]);
                          // └────────┘
                          // Array de valores que desea eliminar

Salida:

[
[1] => b
]

b) Método array_diff_key()

Si conoce las claves de los elementos que desea eliminar, entonces desea utilizar \array_diff_key(). Debe asegurarse de pasar las claves como claves en el segundo parámetro y no como valores. Las claves no se reindexan.

Código:

$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
                               // ↑           ↑
                              // Array de claves que desea eliminar

Salida:

[
[1] => b
]

Cabe señalar que unset()mantendrá los índices intactos, que es lo que esperaría al usar índices de cadena (matriz como tabla hash), pero puede ser bastante sorprendente cuando se trata de matrices indexadas de números enteros:

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

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

Por array_splice()lo tanto, se puede usar si desea normalizar sus claves enteras. Otra opción es usar array_values()after unset():

$array = array(0, 1, 2, 3);

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

Otros Ejemplos

a) Ejemplo con array_diff

// Nuestra matriz inicial
$arr = array("blue", "green", "red", "yellow", "green", "orange", "yellow", "indigo", "red");
print_r($arr);

// Elimina los elementos cuyos valores son amarillos o rojos.
$arr = array_diff($arr, array("yellow", "red"));
print_r($arr);

Esta es la salida del código anterior:

Array
(
[0] => blue
[1] => green
[2] => red
[3] => yellow
[4] => green
[5] => orange
[6] => yellow
[7] => indigo
[8] => red
)

Array
(
[0] => blue
[1] => green
[4] => green
[5] => orange
[7] => indigo
)

Eliminar un solo elemento de una matriz

$array1 = array('A', 'B', 'C', 'D', 'E');
unset($array1[2]); // Eliminar el valor del índice(2) de la matriz
var_dump($array1);

La salida será:

array(4) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[3]=>
string(1) "D"
[4]=>
string(1) "E"
}

Si necesita volver a indexar la matriz:

$array1 = array_values($array1);
var_dump($array1);

Entonces la salida será:

array(4) {
[0]=>
string(1) "A"
[1]=>
string(1) "B"
[2]=>
string(1) "D"
[3]=>
string(1) "E"
}
  1. Para eliminar un elemento, use unset () :

Si, solo deseamos eliminar un elemento de un array podemos apoyarnos rápidamente de la función UNSET

unset($array[3]);
unset($array['foo']);
  1. Para eliminar varios elementos no contiguos, también use unset() :

Por otro lado, si deseamos eliminar más de un elemento dentro de un array podemos apoyarnos de este método.

unset($array[3], $array[5]);
unset($array['foo'], $array['bar']);
  1. Para eliminar varios elementos contiguos, use array_splice() :

Ahora, algo más preparado, si deseamos eliminar elementos contiguos

array_splice($array, $offset, $length);

Conclusión

Hemos visto varios ejemplos de cómo eliminar un elemento de un array o múltiples elementos usando varias funciones predeterminadas del PHP.

Solo queda plasmarlo en sus proyectos web el uso correcto de dichas funciones
Espero que esta breve explicación les ayude a despejar sus dudas de como eliminar elementos de una matriz en PHP.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Deja un comentario

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

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad