Eliminar elemento de array en PHP: guía fácil para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cómo eliminar un elemento de un array en PHP: de principiante a experto

\n\n

Imagina que estás desarrollando una tienda online en PHP. Llega un pedido, pero el producto se agotó en el almacén y debes quitarlo del carrito. O estás procesando una lista de usuarios y alguien decide eliminar su cuenta. En ambos casos, necesitas eliminar un elemento de un array en PHP.

\n\n

Parece sencillo, ¿verdad? Pero aquí los principiantes suelen caer en una trampa. Simplemente usar unset() puede romper el array: las claves dejan de ser secuenciales y un bucle foreach empieza a dar sorpresas. No te preocupes, analizaremos todos los detalles y aprenderemos a eliminar elementos correctamente.

\n\n

Este artículo es una adaptación de una pregunta popular en Stack Overflow con miles de visitas. Hemos traducido las respuestas complejas a un lenguaje sencillo y añadido ejemplos de la práctica real.

\n\n

¿Qué es un array en PHP y por qué es importante "limpiarlo"?

\n\n

Un array es un contenedor de datos. Imagina una caja con celdas, donde cada celda tiene un número (índice) o un nombre (clave). A veces los datos en esas celdas se vuelven obsoletos y hay que eliminarlos.

\n\n

En PHP existen dos tipos de arrays:

\n\n
    \n
  • Indexados — claves: 0, 1, 2, 3... (como una lista de productos).
  • \n
  • Asociativos — claves: cadenas de texto (ej. "nombre" => "Carlos").
  • \n
\n\n

Y para cada tipo existe una forma "correcta" de eliminar. Si te equivocas, obtendrás un error difícil de depurar.

\n\n
\n\n

Método #1: unset() — la fuerza bruta (y sus consecuencias)

\n\n

La función unset($array[$clave]) es la forma más obvia de eliminar un elemento de un array en PHP. Simplemente destruye la variable o el elemento del array.

\n\n
<?php\n$frutas = ['manzana', 'plátano', 'cereza', 'dátil'];\nunset($frutas[1]); // eliminamos 'plátano'\nprint_r($frutas);\n?>
\n\n

Resultado:

\n\n
Array\n(\n    [0] => manzana\n    [2] => cereza\n    [3] => dátil\n)
\n\n

Observa que el índice 1 desapareció, pero los demás índices no se reordenaron. Ahora tienes un array con un "hueco": 0, 2, 3. Si intentas recorrerlo con un bucle for usando $i = 0; $i < count($array); $i++, obtendrás un error en el índice 1 porque ya no existe.

\n\n

¿Cuándo usar unset():

\n
    \n
  • Para arrays asociativos (claves de texto) — aquí los huecos no importan.
  • \n
  • Cuando no te importe el orden de los índices.
  • \n
\n\n

¿Cuándo NO usarlo:

\n
    \n
  • Para arrays indexados donde la secuencia (0,1,2...) es importante.
  • \n
  • Si planeas serializar el array o convertirlo a JSON — los huecos pueden romper la lógica en el cliente.
  • \n
\n\n
\n\n

Método #2: array_splice() — eliminar y reindexar

\n\n

Si quieres eliminar un elemento de un array en PHP y mantener los índices numéricos secuenciales, usa array_splice(). Esta función no solo elimina, sino que también "compacta" el array automáticamente.

\n\n
<?php\n$frutas = ['manzana', 'plátano', 'cereza', 'dátil'];\narray_splice($frutas, 1, 1); // desde el índice 1, elimina 1 elemento\nprint_r($frutas);\n?>
\n\n

Resultado:

\n\n
Array\n(\n    [0] => manzana\n    [1] => cereza\n    [2] => dátil\n)
\n\n

¡Los índices vuelven a ser 0, 1, 2! Perfecto. array_splice() acepta tres parámetros:

\n
    \n
  • El array (se pasa por referencia — el array original se modifica).
  • \n
  • El índice de inicio.
  • \n
  • La cantidad de elementos a eliminar (si no se especifica, elimina hasta el final).
  • \n
\n\n

Bonus: esta función devuelve los elementos eliminados, así que puedes guardarlos:

\n\n
<?php\n$eliminado = array_splice($frutas, 1, 1);\necho "Eliminado: " . $eliminado[0]; // plátano\n?>
\n\n

Desventaja: solo funciona con índices numéricos. Para arrays asociativos, <

Blogs

Book Recommendations