2011-08-17 16 views
5

Tengo una matriz que contiene valores duplicados. Quiero ordenar la matriz para que los valores con la mayor cantidad de duplicados aparezcan primero en la fila. He aquí un ejemplo de mi matriz:Ordenar matrices PHP basadas en valores duplicados

array(1, 2, 3, 2, 1, 2, 2); 

que desea ordenar esta matriz para que se ordena a sí mismo en base a la cantidad de duplicados en los siguientes:

array(2, 1, 3); 

'2' tiene la mayoría de los duplicados por lo primero se ordena, seguido por valores se duplicará menos. ¿Alguien sabe cómo puedo lograr esto?

Respuesta

11
$acv=array_count_values($array); // 1=>2, 2=>3,3=>1 
arsort($acv); //save keys,   2=>3, 1=>2, 3=>1 
$result=array_keys($acv); //get only keys 2,1,3 
+0

Funciona perfectamente, gracias – hohner

+0

¡Esto es perfecto! En caso de que quiera utilizar este insensible a las mayúsculas/minúsculas: $ acv = array_count_values ​​(array_map ('strtolower', $ array)); – Alex

0
  1. traverse la matriz, y SUCESOS incremento en otra matriz asociativa clave-valor.
  2. ordena la segunda matriz por valores.
  3. obtener array_keys de la segunda matriz.
Cuestiones relacionadas