PHP: magia con los arreglos

Por algunas horas estuve muy arrepentido de no haber estado en las clases de programacion en C en la universidad(venia de otra U, asi que la convalide y “decidi” no entrar de oyente y perder el tiempo por ahi…estudiando calculo integral xq estaba en panga).

Hoy realmente lo necesite: tenia una situacion en PHP y la solucion claramente en hacer un algoritmo que de una lista de cadenas de “strings” extrajera los valores unicos(todos los no repetidos, y los repetidos solo 1 vez; estilo MySQL DISTINCT).

Mi cabeza penso y solo encontro un “vacio” en la seccion de “algoritmos basicos de programacion’…muy, muy arrepentido .

Lo primero que hice fue “inventar” el algoritmo con una vieja favorita: la prueba de escritorio.  De acuerdo a mi parecer, el algoritmo que probe en papel estaba bueno, pero cuando fui a programarlo en vez de extraer una lista de valores unicos, duplico y triplico hasta los miles la cantidad de valores…que paso ahi? No tengo idea; y no tengo tiempo para averiguarlo xq tengo que terminar este task!

Afortunadamente, hay dos(2) funciones en PHP que me “sacaron del hoyo” en esta ocasion:

array_unique es una funcion que retorna un nuevo arreglo con todos los valores unicos de un arreglo de valores repetidos.

ejemplo:

Screen Shot 2013-04-01 at 1.14.54 AM

Tiene tres elementos importantes:

los compara como “strings”

la condicion es esta: si $string1 === $string2 , guarda el $string1 en el nuevo arreglo(es decir, siempre agarra la primera instancia que encuentra del valor, aunque se repita mas adelante en el arreglo)

mantiene los indices/llaves originales: esto es SUPER importante recordarlo porque si los valores son 3,6,8,32,44,54,64 asi mismo te los guarda en el arreglo nuevo, tiempo de $array[54] = “string!”;

Si necesitas que los indices esten en orden de nuevo (tipo 0,1,2,3…) tienes que hacer un truco mas…

para mi caso en particular, necesitaba el segundo truco, porque no me gustan los indices en desorden(y te “hacen perder tiempo” si quieres recorrer el arreglo).

El segundo truco viene con la funcion array_values : esta funcion te retorna un arreglo con los “valores” del arreglo original, en una lista(o arreglo, no se) consecutiva(es decir, con indices 0,1,2,3…)

ejemplo:

array_values

con esta, ya tienes un arreglo con los valores unicos, y ademas ordenados.

Encontrar estas funciones me ha salvado y ojala te ayuden a ti tambien mas adelante.  En PHP hay muchisimas funciones para muchisimas cosas que quizas solo son relevantes un par de veces en la vida, pero hay que estar agradecido de que Lerdorf y el quipo de PHP pensaron en muchas, muchas posibilidades :D

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s