Introducción
Este es un ejercicio simple pero que nos servirá a la mayoría al trabajar con arreglos en PHP. En algún momento de nuestras vidas puede que nos topemos con el problema de eliminar un elemento de un arreglo en PHP.
Por ejemplo, si tenemos un carrito de compras como el que implementamos en el sistema de ventas MVC tendremos que saber quitar un elemento de un array en PHP.
Cómo eliminar o remover elemento de arreglo en PHP
Esto es muy simple, no importa cómo esté compuesto nuestro arreglo. Puede ser un arreglo de arreglos, de objetos, de números, de cadenas o de lo que sea, eso no importará.
Lo que tenemos que conocer es el índice del arreglo, es decir, ¿en cuál posición está nuestro elemento? y para ello podemos hacer una búsqueda secuencial como lo expliqué en este post.
Una vez que tenemos al índice, llamamos a array_splice cuya documentación se encuentra aquí.
Lo que hace esa función es remover o eliminar elementos de un arreglo y opcionalmente remplazarlos con otros. Como argumentos, en orden, recibe:
- El arreglo al que le vamos a eliminar el elemento
- A partir de dónde empezar la eliminación (desde cuál índice)
- Cuántos elementos vamos a eliminar desde el índice del argumento 2
- Valores que poner después de los elementos eliminados. Debe ser un arreglo
Pero bueno, eso confunde un poco. Para eliminar únicamente un elemento, le pasamos el arreglo, luego el índice o posición y finalmente el número 1; lo que hará que elimine únicamente un elemento a partir del índice que le damos, y que no lo remplace con nada.
Cuidado: esta función no devuelve el arreglo, devuelve los elementos eliminados y modifica directamente al arreglo; es decir, recibe al array por referencia.
Ejemplo en donde eliminamos un elemento del array
Vamos a eliminar un elemento de nuestro arreglo de frutas. En este caso vamos a omitir la búsqueda secuencial para hacer más corta la explicación. Por cierto, estamos usando la sintaxis corta de arreglos.
Aquí el código:
<?php
$frutas = ["Manzana", "Pera", "Sandía", "Limón", "Naranja"];
#Imprimirlo antes de quitarle un elemento
echo "Antes de eliminar:\n";
print_r($frutas);
/*
Nota: aquí el índice lo definimos nosotros mismos, también
puedes buscarlo usando una búsqueda secuencial:
Búsqueda secuencial en arreglo de PHP
Este índice también puedes recibirlo por $_GET, a través de un formulario
o por el medio que desees
*/
# El índice le pertenece a Sandía
$indiceParaEliminar = 2;
$cuantos = 1;
# Eliminar 1 elemento a partir del índice 2
# Recordemos que array_splice modifica el arreglo, no necesitamos guardar su resultado
array_splice($frutas, $indiceParaEliminar, $cuantos);
echo "Después de eliminar:\n";
print_r($frutas);
?>
Como dice el código, el índice podemos recibirlo por cualquier método, y si deseamos buscarlo nosotros mismos entonces hacemos la búsqueda.
No guardamos el resultado de la llamada a la función porque array_splice modifica directamente al arreglo que le pasamos, y devuelve lo que eliminó, cosa que no nos importa por el momento.
La salida es esta:
En este caso lo hicimos con un arreglo de cadenas, pero funciona con arreglos de cualquier tipo.
Aquí puedes ver cómo ejecutar un archivo de PHP desde la terminal.
Pingback: Ordenar un arreglo ascendente y descendente en PHP - Parzibyte's blog