Poesía Binaria

Eliminar un elemento de un array en PHP

En principio vamos a definir dos tipos de arrays: los que tienen índices numéricos y los que no. Vemos aquí un ejemplo de los dos:

1
2
3
4
5
<?php
$array = array ('Playa', 'Montaña', 'Río', 'Ciudad', 'Afueras');

print_r($array);
?>

Este script devolverá:

Array
(
[0] => Playa
[1] => Montaña
[2] => Río
[3] => Ciudad
[4] => Afueras
)

Luego podemos ver arrays que tienen como índice una cadena de caracteres:

1
2
3
4
5
6
$array=array('gato' => 'perro',
         'mesa' => 'silla',
         'alto' => 'bajo',
         'fijo' => 'móvil',
         );
print_r($array);

Lo cual devolverá:

Array
(
[gato] => perro
[mesa] => silla
[alto] => bajo
[fijo] => móvil
)

Ahora bien, si queremos borrar sólo un elemento, podemos utilizar unset(), lo que se utiliza para borrar una variable, de hecho si lo probamos en el segundo array nos devolvería:

1
2
unset($array['mesa']);
print_r($array);

Array
(
[gato] => perro
[alto] => bajo
[fijo] => móvil
)

Todo bien, pero si lo probamos en el array de índices numéricos:

1
2
unset($array[2]);
print_r($array);

Array
(
[0] => Playa
[1] => Montaña
[3] => Ciudad
[4] => Afueras
)

Ahora lo que ha pasado es que el índice 2 ha desaparecido, se ha borrado, pero los índices no se han reestructurado. A veces nos puede interesar, aunque por poner un ejemplo claro, si recorremos ese array con un for va a devolver un error al llegar al elemento 2 ya que no existe.

Para solucionar esto, podemos eliminar el elemento de otra forma, utilizando array_splice() de la siguiente manera:

1
2
array_splice($array, 2, 1);
print_r($array);

De esa forma, el array resultante será:

Array
(
[0] => Playa
[1] => Montaña
[2] => Ciudad
[3] => Afueras
)

Aunque esta función podemos utilizarla, por ejemplo para eliminar más de un elemento, si queremos borrar desde el elemento 2, dos elementos más, podemos hacer lo siguiente:

1
array_splice($array, 2, 2);

En el tercer parámetro, ponemos el número de elementos a eliminar desde el número de elemento indicado en el segundo parámetro.

El primer parámetro, el array se pasa por referencia, es decir, el array resultante se almacena en la misma variable de entrada, en este caso, $array y si extraemos la salida de array_splice():

1
2
$salida=array_splice($array, 2,2);
print_r($salida);

Obtendremos los elementos que hemos extraído de $array:

Array
(
[0] => Río
[1] => Ciudad
)

También podría interesarte....