Foros del Web » Programando para Internet » PHP »

Ordenamiento de arrays complejo

Estas en el tema de Ordenamiento de arrays complejo en el foro de PHP en Foros del Web. Hola, estoy haciendo una nube de tags para mi web, y tengo un arreglo de este estilo: Código: Array ( [0] => Array ( [query] ...
  #1 (permalink)  
Antiguo 06/02/2009, 04:01
 
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario
Mensajes: 65
Antigüedad: 16 años, 4 meses
Puntos: 2
Pregunta Ordenamiento de arrays complejo

Hola, estoy haciendo una nube de tags para mi web, y tengo un arreglo de este estilo:

Código:
Array
(
    [0] => Array
        (
            [query] => hola
            [cant] => 4
        )

    [1] => Array
        (
            [query] => foros
            [cant] => 7
        )

    [2] => Array
        (
            [query] => delweb
            [cant] => 12
        )

)

Quisiera saber si puedo ordenar el array principal (el que contiene los otros 3 arrays), pero teniendo en cuenta los valores de los respectivos arrays internos, es decir ordenandolos por query o por cant.

Muchas gracias
  #2 (permalink)  
Antiguo 06/02/2009, 04:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Ordenamiento de arrays complejo

Puedes usar usort() www.php.net/usort para usar una funcion definida por ti para comparar los elementos del array.
  #3 (permalink)  
Antiguo 06/02/2009, 04:23
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Ordenamiento de arrays complejo

luciano: posiblemente (al menos para hacer mas general tu clase o funcion) debas incluir en el array como tercer parametro la URL a donde vas con esa etiqueta

Otra cosa..... si ordenas de mayor a menor o viceversa y le asignas tamaños de fuente correspondientes...... te va a quedar muy feo, es mejor que queden ordenados al azar por cantidad (y no de mayor a menor o alrevez)
__________________
Salu2!
  #4 (permalink)  
Antiguo 06/02/2009, 14:57
 
Fecha de Ingreso: diciembre-2007
Ubicación: Rosario
Mensajes: 65
Antigüedad: 16 años, 4 meses
Puntos: 2
De acuerdo Respuesta: Ordenamiento de arrays complejo

Primero que nada muchas gracias a ambos.

DarkJ me parece que lo voy a poder resolver con tu idea, muchas gracias

Italico76:

Cita:
posiblemente (al menos para hacer mas general tu clase o funcion) debas incluir en el array como tercer parametro la URL a donde vas con esa etiqueta
No, no creo que haga falta porque son simplemente keywords, la url la puedo generar conociendo la url de búsqueda, por ejemplo, guardo la keyword LAPIZ y al momento de generar la nube la url podría ser: example.com/search/LAPIZ

Cita:
Otra cosa..... si ordenas de mayor a menor o viceversa y le asignas tamaños de fuente correspondientes...... te va a quedar muy feo, es mejor que queden ordenados al azar por cantidad (y no de mayor a menor o alrevez)
En este momento solamente lo puedo ordenar por cantidad, o desordenarlos (shuffle()), lo que quiero probar es cómo queda con los tags ordenados alfabéticamente y los tamaños de letra y colores correspondientes. Pueden verlo, esta es la página: kiwitorrent.com (no me deja poner direcciones porque tengo 28 mensajes en el foro, necesito 30 )

Muchas gracias de nuevo a los dos


****************************************
--------------------- AGREGADO ---------------------
****************************************


Ya lo solucioné, ahora puedo ordenarlo de la forma que quiera

Simplemente así:

Código PHP:
function ordena($a$b)
{
    return 
strcmp($a["query"], $b["query"]);
}

usort($queries"ordena"); 
Saludos



******************************************
--------------------- AGREGADO 2 ---------------------
******************************************


Ya mejoré un poquito la funcion asi con un simple cambio puedo elegir de qué manera se ordenan simplemente comentando las lineas de la funcion ordena().

Código PHP:
function ordena($a$b)
{
    return 
strcmp($a["query"], $b["query"]); // por query descendente
    
return strcmp($b["query"], $a["query"]); // por query ascendente
    
return ($a["cant"] > $b["cant"]) ? -1// por cant de descendente
    
return ($a["cant"] < $b["cant"]) ? -1// por cant de ascendente
    
return ( md5($a["cant"]) > md5($b["cant"]) ) ? -1// algo similar a un shuffle, pero siempre deberia ser igual


Última edición por luciano_che; 06/02/2009 a las 15:24
  #5 (permalink)  
Antiguo 06/02/2009, 15:38
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Ordenamiento de arrays complejo

Te felicito por tu tag cloud es excelente

Cita:
No, no creo que haga falta porque son simplemente keywords, la url la puedo generar conociendo la url de búsqueda, por ejemplo, guardo la keyword LAPIZ y al momento de generar la nube la url podría ser: example.com/search/LAPIZ
Obviamente que podes.....pero NO siempre....... yo decia que hiciera algo mas general...... donde podria no aparecer la palabra clave en la url.
__________________
Salu2!

Última edición por Italico76; 06/02/2009 a las 17:18
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:14.