2011-08-17 11 views
5

Ho una matrice che contiene valori duplicati. Voglio ordinare l'array in modo che i valori con il maggior numero di duplicati appaiano per primi. Ecco un esempio del mio array:Ordinamento di matrici PHP basate su valori duplicati

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

voglio ordinare questo array in modo che essa si ordina in base alla quantità di duplicati nelle seguenti:

array(2, 1, 3); 

'2' ha il maggior numero di duplicati in modo è ordinato per primo, seguito da valori meno duplicati. Qualcuno sa come posso realizzare questo?

risposta

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

Funziona perfettamente, grazie – hohner

+0

Questo è perfetto! Nel caso in cui si desideri utilizzare questo carattere maiuscole e minuscole: $ acv = array_count_values ​​(array_map ('strtolower', $ array)); – Alex

0
  1. traslazione della matrice, e casi incremento in un altro array associativo valore-chiave.
  2. ordina il secondo array in base ai valori.
  3. ottiene array_keys del secondo array.
Problemi correlati