Eliminar posición de un array en PHP

Para borrar variables se utiliza unset(), también para eliminar posiciones de un array, pero si sólo se usa unset() la posición no se elimina del todo, sigue existiendo pero esta vacía. No sé si lo estoy explicando bien, pero con los ejemplos se entiende mejor. Es bastante sencillo, no es algo complicado de hacer, sólo hay que entenderlo.
Por ejemplo, con este array:

$array = 'ni sus,manos son,tan blancas,ni son,blancas sus,palomas';
$array = explode(',',$array);
Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => blancas sus
    [5] => palomas
)

Si se hace

unset($array[4]);

Quedará algo como:

Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [5] => palomas
)

Es decir, el elemento no existe pero su posición en el array no se ha adaptado, hace un salto del 3 al 5 y en ocasiones lo ideal sería que el 4 se eliminara y el siguiente (el 5) pasara a ocupar su posición.

Para eso se puede utilizar la función array_values(), por ejemplo:

$array = array_values($array);

Haría que el resultado fuera:

Array
(
    [0] => ni sus
    [1] => manos son
    [2] => tan blancas
    [3] => ni son
    [4] => palomas
)



Josep Viciana

Programador de 27 años con una década de experiencia como programador. interesado en el diseño, ilustración y nuevas tecnologías. Dedicado desde siempre a la programación Web y desde hace algunos años también a la móvil.

10 comentarios

GRACIAS!!!!!!!!!!!!!!!!!!!
Estuve renegando bastante hasta que te di con tu mágica función para reacomodar un array con espacios vacios….
Saludos y abrazo 😛

Muchas gracias, justo lo que buscaba; pero al intentar reorganizar uno de los 3 arrays de los que elimino posiciones me da el siguiente error:

Warning: array_values() [function.array-values]: The argument should be an array in line ….

Lo raro es que los 3 arrays son exactamente iguales pero únicamente me da el error con el tercero. ¿Alguna idea?

Un saludo.

Hola Iván, como dice el mensaje, el error es porque array_values() no está recibiendo un array en el parámetro.

Si quieres cópiame un trozo del código donde se pueda ver el uso (no estoy seguro de que puedas copiarlo aquí, pero puedes usar pastebin.com para enseñarmelo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *