Foros del Web » Programando para Internet » PHP »

obtener 3 primeros lugares de un arreglo de objetos

Estas en el tema de obtener 3 primeros lugares de un arreglo de objetos en el foro de PHP en Foros del Web. Que tal, primero les deseo felices fiestas Ahora necesito de su ayuda por favor, llevo varios días intentando lo siguiente y ya no doy con ...
  #1 (permalink)  
Antiguo 18/12/2013, 10:27
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
obtener 3 primeros lugares de un arreglo de objetos

Que tal, primero les deseo felices fiestas

Ahora necesito de su ayuda por favor, llevo varios días intentando lo siguiente y ya no doy con lo que necesito,

yo obtengo un array de objetos resultado de una consulta que despues paso a json para presentarle los datos al usuario:

Código PHP:
$items = array();
while(
$row mysql_fetch_object($rs)){
    
array_push($items$row);
}
$result["rows"] = $items;
echo 
json_encode($result); 
el json sale algo asi, obviamente con mas registros:

Código:
{
    "rows": [
        {
            "id_puntaje": "10",
            "clave_estado": "15",
            "clave_municipio": "1",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "77.68",
            "diciembre": null
        },
        {
            "id_puntaje": "18",
            "clave_estado": "15",
            "clave_municipio": "2",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "79.42",
            "diciembre": null
        },
        {
            "id_puntaje": "26",
            "clave_estado": "15",
            "clave_municipio": "3",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "78.48",
            "diciembre": null
        },
        {
            "id_evaluacion": "34",
            "clave_estado": "15",
            "clave_municipio": "4",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "77.07",
            "diciembre": null
        }
    ]
}
bueno, por el momento solo hay datos en noviembre, pero en futuro abra en cada mes un puntaje.

Lo que necesito es que por ejemplo de los registros saber cuales son los 3 primeros lugares pero por cada mes, osea para enero, febrero etc cuales son sus 1°,2° y 3°

y lograr una salida json asi:

Código:
{
    "rows": [
        {
            "id_puntaje": "10",
            "clave_estado": "15",
            "clave_municipio": "1",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "77.68 <img src='images/medalla_cobre.png />",
            "diciembre": null
        },
        {
            "id_puntaje": "18",
            "clave_estado": "15",
            "clave_municipio": "2",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "79.42 <img src='images/medalla_oro.png />'",
            "diciembre": null
        },
        {
            "id_puntaje": "26",
            "clave_estado": "15",
            "clave_municipio": "3",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "78.48 <img src='images/medalla_plata.png />",
            "diciembre": null
        },
        {
            "id_evaluacion": "34",
            "clave_estado": "15",
            "clave_municipio": "4",
            "enero": null,
            "febrero": null,
            "marzo": null,
            "abril": null,
            "mayo": null,
            "junio": null,
            "julio": null,
            "agosto": null,
            "septiembre": null,
            "octubre": null,
            "noviembre": "77.07",
            "diciembre": null
        }
    ]
}
osea al array associativo ordenarlo, obtener los primeros lugares y concatenarles una etiqueta de imagen (ojo primeros lugares de cada mes)



Ayuda por favor!!!!
  #2 (permalink)  
Antiguo 18/12/2013, 12:58
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: obtener 3 primeros lugares de un arreglo de objetos

Antes de.pasarlo a un objeto json haz lo que quieres sobre el mismo array y.despues lo pazaz a json, puedes usar array_multisort(), array_filter()
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: arreglo, mysql, objetos, primeros, registro
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 20:28.