Publi

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

There are 14 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: BlogESfera.com /

  3. Rebe /
    Usando Mozilla Firefox Mozilla Firefox 20.0 en Windows Windows 7

    Y si le pasamos: unset($array[‘silla’]);???? Porque no harán los ejemplos complejos y solo ponen cosas FACILES!!!!

    1. admin / Post Author
      Usando Mozilla Firefox Mozilla Firefox 20.0 en Ubuntu Linux Ubuntu Linux

      Bueno, ese elemento directamente nos dirá que no existe, porque estamos intentando borrarlo por el valor. De todas formas, de existir dicho elemento, se eliminaría y punto.

      Por otra parte, si quieres borrar, el elemento cuyo valor es ‘silla’ podrías utilizar la función array_search(): unset($array[array_search(‘silla’, $array)]);
      Aunque sería recomendable que antes, se comprobara la existencia del elemento:
      $index = array_search(‘silla’, $array);
      if ($index!==false)
      unset($array[$index]);

      Espero haberte ayudado.

  4. Marco /
    Usando Google Chrome Google Chrome 26.0.1410.64 en Windows Windows XP

    gracias, me ayudo al 100%, estoy haciendo un carrito de compra y me ayudo para cuando el cliente quiere quitar un producto de su carro GRACIAS

    1. admin / Post Author
      Usando Mozilla Firefox Mozilla Firefox 20.0 en Ubuntu Linux Ubuntu Linux

      Muchas gracias por tu comentario Marco !!

  5. ricardin /
    Usando Google Chrome Google Chrome 28.0.1500.72 en Windows Windows 7

    solo hablan pichuladas

    1. admin / Post Author
      Usando Mozilla Firefox Mozilla Firefox 22.0 en Ubuntu Linux Ubuntu Linux

      Hombre, algo interesante se me habrá escapado en 4 años de blog, aunque sea de casualidad. De todas formas, intentaré mejorar. Gracias por tu comentario

  6. Pingback: El 2013 para Poesía Binaria | Poesía Binaria /

  7. borjius /
    Usando Google Chrome Google Chrome 35.0.1916.153 en Windows Windows 7

    @admin

    Gracias compañero! Andaba buscando justo eso, cómo borrar un elemento de un array asociativo por su valor, no por el índice.

    Gracias por la ayuda.

  8. Pingback: El 2014 para Poesía Binaria | Poesía Binaria /

  9. Pingback: Un buen 2015 para el blog. Los posts que han marcado el año y consultas SQL – Poesía Binaria /

  10. Cusco /
    Usando Google Chrome Google Chrome 72.0.3626.121 en Windows Windows 7

    Como borraria los elementos de un arreglo si existen datos iguales en otro es decir:
    array1(‘1′,’2′,’3’);
    array2(‘2’);
    y que me quede array1(‘1′,’3’);

  11. jeison olaya /
    Usando Google Chrome Google Chrome 76.0.3809.100 en Windows Windows NT

    Genial, ya que tenia algunas dudas.

Leave a Reply to Rebe Cancle Reply