PHP: Most frequent value in array

后端 未结 2 538
执笔经年
执笔经年 2020-12-03 14:21

So I have this JSON Array:

[0] => 238
[1] => 7
[2] => 86
[3] => 79
[4] => 55
[5] => 92
[6] => 55
[7] => 7
[8] => 254
[9] => 9
[         


        
相关标签:
2条回答
  • 2020-12-03 14:59

    The key is to use something like array_count_values() to tally up the number of occurrences of each value.

    <?php
    
    $array = [238, 7, 86, 79, 55, 92, 55, 7, 254, 9, 75, 238, 89, 238];
    
    // Get array of (value => count) pairs, sorted by descending count
    $counts = array_count_values($array);
    arsort($counts);
    // array(238 => 3, 55 => 2, 7 => 2, 75 => 1, 89 => 1, 9 => 1, ...)
    
    // An array with the first (top) 5 counts
    $top_with_count = array_slice($counts, 0, 5, true);
    // array(238 => 3, 55 => 2, 7 => 2, 75 => 1, 89 => 1)
    
    // An array with just the values
    $top = array_keys($top_with_count);
    // array(238, 55, 7, 75, 89)
    
    ?>
    
    0 讨论(0)
  • 2020-12-03 15:02
    $values = array_count_values($array);
    arsort($values);
    $popular = array_slice(array_keys($values), 0, 5, true);
    
    • array_count_values() gets the count of the number of times each item appears in an array
    • arsort() sorts the array by number of occurrences in reverse order
    • array_keys() gets the actual value which is the array key in the results from array_count_values()
    • array_slice() gives us the first five elements of the results

    Demo

    $array = [1,2,3,4,238, 7, 86, 79, 55, 92, 55, 7, 254, 9, 75, 238, 89, 238];
    $values = array_count_values($array);
    arsort($values);
    $popular = array_slice(array_keys($values), 0, 5, true);
    
    array (
      0 => 238,
      1 => 55,
      2 => 7,
      3 => 4,
      4 => 3,
    )
    
    0 讨论(0)
提交回复
热议问题