2011-08-17 13 views
5

Mam tablicę zawierającą zduplikowane wartości. Chcę posortować tablicę tak, aby wartości z największą liczbą duplikatów pojawiały się najpierw w linii. Oto przykład mojej tablicy:Zamawianie tablic PHP na podstawie zduplikowanych wartości

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

chcę sortować tej tablicy tak, że zamawia się na podstawie ilości powtórzeń na następujące:

array(2, 1, 3); 

„2” ma najbardziej duplikaty więc najpierw jest sortowany, a następnie wartości będą mniej duplikowane. Czy ktoś wie, jak mogę to osiągnąć?

Odpowiedz

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

Działa idealnie, dzięki – hohner

+0

To jest idealne! W przypadku, gdy chcesz używać tego nieuwzględniającego wielkości liter: $ acv = liczba_umiejętności (tablica_map ("strtolower", $ tablica)); – Alex

0
  1. przesuwu matrycy oraz wystąpień przyrost innym asocjacyjnej klucz wartości.
  2. sortuj drugą tablicę według wartości.
  3. pobierz array_keys z drugiej tablicy.
Powiązane problemy