Cómo eliminar un elemento de un array en PHP: de principiante a experto
Imagina: estás escribiendo una tienda online y el comprador elimina un producto del carrito. O estás procesando registros y necesitas descartar entradas sobrantes. O simplemente limpias un array de datos "basura". Tarde o temprano cada desarrollador de PHP se enfrenta a la tarea: ¿cómo eliminar un elemento de un array?
Parecería, ¿qué tiene de complicado? Pero aquí es donde comienza lo interesante. En PHP no hay una única función "elimina elemento". En cambio, hay varias formas, cada una con sus matices. Y si eliges la incorrecta, puedes obtener huecos en el array (numeración alterada), perder datos o simplemente confundirte.
En este artículo analizaremos todas las formas principales de eliminar elementos de un array en PHP: desde el simple unset() hasta el avanzado array_filter(). Aprenderás cuándo aplicar cada método y dejarás de temer esta tarea para siempre.
1. Eliminación rápida por clave: la función unset()
La forma más obvia y popular es la función unset(). Destruye una variable o un elemento del array. Funciona al instante y es intuitivamente clara.
<?php$fruits = ['apple', 'banana', 'cherry', 'date'];unset($fruits[2]); // Eliminamos el elemento con índice 2 ('cherry')print_r($fruits);?>Resultado:
Array( [0] => apple [1] => banana [3] => date)Matiz importante: las claves del array no se reindexan. El índice 2 desapareció y ahora tienes un "hueco". Para arrays asociativos esto es normal. Pero para listas (arrays numéricos) puede ser un problema si esperas una numeración continua (0, 1, 2, 3...).
¿Cuándo usar unset()?
- Sabes exactamente la clave del elemento.
- La numeración no es importante (array asociativo).
- Necesitas eliminar uno o dos elementos.
2. Eliminación por valor: array_search + unset
¿Y qué pasa si no sabes la clave, pero sí el valor? Por ejemplo, necesitas eliminar el producto "banana" del carrito. Aquí viene al rescate array_search().
<?php$cart = ['apple', 'banana', 'cherry', 'banana'];$key = array_search('banana', $cart);if ($key !== false) { unset($cart[$key]);}print_r($cart);?>Resultado:
Array( [0] => apple [2] => cherry [3] => banana)Ten en cuenta: array_search() encuentra la primera ocurrencia. Si hay varias "bananas" en el array, solo se eliminará la primera. Para eliminar todas, tendrás que usar un bucle o array_diff() (del cual hablaremos más adelante).
3. Eliminación con reindexación: array_splice()
Si necesitas eliminar un elemento de un array numérico y deseas que las claves sean continuas (0, 1, 2...), usa array_splice(). Esta es una función potente que no solo puede eliminar, sino también insertar elementos.
<?php$numbers = [10, 20, 30, 40, 50];array_splice($numbers, 2, 1); // Eliminamos 1 elemento, comenzando desde el índice 2 (el número 30)print_r($numbers);?>Resultado:
Array( [0] => 10 [1] => 20 [2] => 40 [3] => 50)El array se "comprimió": los índices se recalcularon. Ideal para listas, colas y cualquier dato secuencial.
Sintaxis de array_splice()
array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = []): array$array— array original (se pasa por referencia, se modificará).$offset— desde qué índice comenzamos.$length— cuántos elementos eliminar.$replacement