2016-07-14 53 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