martes, 16 de octubre de 2012

Eliminar posiciones vacías de un array en PHP

En base a un proyecto simple que he hecho, me encontré con la necesidad de usar array´s y hacer varias cosas con ellos entre todas, eliminar las posiciones vacías que tuvieran. P. Ej.

$miArray = array("","Hola","","Mundo",1,2,"",3);

El array anterior tiene 3 posiciones vacías. Usaremos 2 funciones: array_values() y array_diff() quedando de la siguiente manera.

$miArraySinVacios = array_values(array_diff($miArray, array('')));

Lo que estamos haciendo es obtener los valores del array original y comparándolos.

array(5) {
[0]=>
string(4) "Hola"
[1]=>
string(5) "Mundo"
[2]=>
int(1)
[3]=>
int(2)
[4]=>
int(3)
}

4 comentarios:

Lucy in the Sky with Diamonds dijo...

Muchísimas gracias!!! No sabes la de vueltas que le había dado al array y no había manera de conseguir esto.
Gracias!!

Unknown dijo...

Más simple es utilizar la función array_filter.

Cesar dijo...

excelente, no es mas simple usar array_filter, es como lo necesites, xq array_filter te elimina todos los valores nulos y entre esos entra el valor 0, y por lo menos para la aplicacion que estoy desarrollando yo necesitaba guardar incluso los 0, asi que la solucion de esta entrada se adapto a mi problema

ACM dijo...

Hola, va genial, sólo puntualizar que va a fallar si alguno de los arrays es multidimensional, por lo que habría que añadir una comprobación previa si por ejemplo usamos esta solución en una función.

Saludos.