Foros del Web » Programando para Internet » PHP »

Encontrar la clave de un array ordenado por valores

Estas en el tema de Encontrar la clave de un array ordenado por valores en el foro de PHP en Foros del Web. Buenas, Tengo un array de 15 posiciones, cada posición corresponde con un id de mi tabla, y cada coincidencia que encuentro voy incrementando un contador ...
  #1 (permalink)  
Antiguo 10/02/2013, 05:10
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Encontrar la clave de un array ordenado por valores

Buenas,

Tengo un array de 15 posiciones, cada posición corresponde con un id de mi tabla, y cada coincidencia que encuentro voy incrementando un contador para esa key del array. En resumen puedo llegar a tener un array de este tipo, ordenado de mayor a menor valores

Array
(
[2] => 51
[10] => 7
[8] => 3
[12] => 1
[11] => 0
[13] => 0
[15] => 0
[14] => 0
[9] => 0
[7] => 0
[3] => 0
[1] => 0
[4] => 0
[5] => 0
[6] => 0
[0] => 0
)

Lo que necesito es poder saber que clave del array es la que ha obtenido mayor puntuación y si ha habido empate técnico (si por ejemplo las claves 2 y 10, hubiesen tenido 52 puntos, que me diga eh empate encontrado).

He estado probando con arsort() para ordenar los valores del array de mayor a menor, tal y como se muestra arriba.

También he probado max() que te devuelve en este ejemplo el valor 52, pero yo lo que necesito es saber a que clave hizo referencia el valor máximo del array y si hubo otros valores iguales al valor mas grande.

Sabéis si existe alguna funcion que me ayude para esto?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 10/02/2013, 05:21
Avatar de Fylux  
Fecha de Ingreso: junio-2012
Mensajes: 141
Antigüedad: 12 años, 4 meses
Puntos: 9
Respuesta: Encontrar la clave de un array ordenado por valores

Cita:
Iniciado por neodani Ver Mensaje
Buenas,

Tengo un array de 15 posiciones, cada posición corresponde con un id de mi tabla, y cada coincidencia que encuentro voy incrementando un contador para esa key del array. En resumen puedo llegar a tener un array de este tipo, ordenado de mayor a menor valores

Array
(
[2] => 51
[10] => 7
[8] => 3
[12] => 1
[11] => 0
[13] => 0
[15] => 0
[14] => 0
[9] => 0
[7] => 0
[3] => 0
[1] => 0
[4] => 0
[5] => 0
[6] => 0
[0] => 0
)

Lo que necesito es poder saber que clave del array es la que ha obtenido mayor puntuación y si ha habido empate técnico (si por ejemplo las claves 2 y 10, hubiesen tenido 52 puntos, que me diga eh empate encontrado).

He estado probando con arsort() para ordenar los valores del array de mayor a menor, tal y como se muestra arriba.

También he probado max() que te devuelve en este ejemplo el valor 52, pero yo lo que necesito es saber a que clave hizo referencia el valor máximo del array y si hubo otros valores iguales al valor mas grande.

Sabéis si existe alguna funcion que me ayude para esto?

Muchas gracias de antemano
Bueno, PHP no tiene una función que haga exclusivamente lo que tu quieres. Pero con la ayuda de las que has citado puedes usar un for o un foreach para comprobar lo que dices y si hay empates y demás de forma sencilla.
Por ejemplo para saber si hay un empate guardas el valor de ese campo en una variable temporal y cuando consultes el nuevo campo compruebas si era el mismo campo que el anterior.

Saludos.
__________________
Si todos escribiéramos sin faltas de ortografía, el mundo sería un lugar mejor.
  #3 (permalink)  
Antiguo 10/02/2013, 10:30
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Encontrar la clave de un array ordenado por valores

Es simple:

Código PHP:
Ver original
  1. $res = array_keys($arr, max($arr));

Así te devuelve la clave del valor máximo y sus posibles "empates".

También se puede hacer con Mysql directamente, consulta en su foro o busca en google "max values mysql", te van a salir muchas soluciones.

http://php.net/manual/es/function.array-keys.php

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #4 (permalink)  
Antiguo 11/02/2013, 13:44
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 8 meses
Puntos: 20
Respuesta: Encontrar la clave de un array ordenado por valores

Gracias andresdzphp,

Funciona perfecto, era lo que buscaba, muchas gracias de nuevo!

Etiquetas: clave, encontrar, ordenado, tabla
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 11:23.