2016-07-14 54 views
1

我需要按重複數量的數量對數組進行排序。如何訂購基於重複值的php數組

下面是一個例子:

$arr = array(
    1=> 'Love is true', 
    2=> 'Love is true', 
    3=> 'Hello Word', 
    4=> 'Hello Word', 
    5=> 'Hope', 
    6=> 'Hope', 
    7=> 'Love is true', 
    8=> 'Hello Word', 
    9=> 'Hello Word', 
    10=>'Hope', 
    11=>'Hello Word', 
    12=>'Hope', 
    13=>'Hello Word', 
    14=>'Hello Word', 
    15=>'Hello Word'); 
print_r($arr); 

在這個陣列中,我們可以看到,

 
Love is true > duplicate > 3x 
Hello Word > duplicate > 8x 
Hope   > duplicate > 4x 

我想排序把那個重複最​​先的值:

 
Hello Word position 1# In array (repeats 8 times) 
Hope    2# In array (repeats 4 times) 
Love is true  3# In array (repeats 3 times) 

所以它返回這個數組:

Array 
(
    [0] => Hello Word 
    [1] => Hope 
    [2] = Love is true 
) 
+0

問題在哪裏,你卡在哪裏? – Rizier123

+1

陣列功能咒語比賽開始,哈哈:d'array_count_values' +'arsort' +'array_keys' – Ghost

+1

@Ghost,這是一個[很好的解決方案(https://eval.in/605520),你要張貼或我可以嗎? \ * - \ * – FirstOne

回答

3

你可以這樣說:

$count = array_count_values($arr); // count each repetition 
arsort($count); // sort the values 
$array = array_keys($count); // get the expected array 
print_r($array); 

這將輸出:

Array 
(
    [0] => Hello Word 
    [1] => Hope 
    [2] => Love is true 
) 

看到它在行動here


你可以在這個答案下面使用的功能提供一些參考:


可以 var_dump過程的每一步,看看發生了什麼事情。

+0

雖然這個代碼片斷可以解決的問題,[包括說明](HTTP://meta.stackexchange。 com/questions/114762/explain-completely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – Rizier123