Search code examples
phparraysjsonrepeat

PHP: Most frequent value in array


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
[10] => 75
[11] => 238
[12] => 89
[13] => 238

I will be having more values in the actual JSON file. But by looking at this I can see that 238 and 55 is being repeated more than any other number. What I want to do is get the top 5 most repeated values in the array and store them in a new PHP array.


Solution

  • $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,
    )