PHP Ejemplos

Eliminar un elemento de una matriz en PHP

Formas de eliminar uno o más elementos de una matriz

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.

Relacionado  Mostrar registros con BootStrap PHP DBcontroller

\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.

Relacionado  Validar rango de fechas en php: Ejemplos completos

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() :
Relacionado  PHP substr(): Extraer texto o partes de una cadena con PHP

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.

Descarga 204 Script y Sistemas PHP & MySQL

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

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

Botón volver arriba