PHP: How to find most used array key?

2020-06-23 18:27发布

Lets say I have a simple 1D array with 10-20 entries. Some will be duplicate, How would I find out which entry is used the most? like..

$code = Array("test" , "cat" , "test" , "this", "that", "then");

How would I show "test" as the most used entry?

标签: php arrays
3条回答
冷血范
2楼-- · 2020-06-23 18:32

You can get a count of the number of occurrences of each value by using array_count_values.

$code = array("test" , "cat" , "cat", "test" , "this", "that", "then");
$counts = array_count_values($code);
var_dump($counts);
/*
array(5) {
  ["test"]=>
  int(2)
  ["cat"]=>
  int(2)
  ["this"]=>
  int(1)
  ["that"]=>
  int(1)
  ["then"]=>
  int(1)
}
*/

To get the most frequently occurring value, you can call max on the array and then access the (first) value with array_search.

$code = array("test" , "cat" , "cat", "test" , "this", "that", "then");
$counts = array_count_values($code);
$max = max($counts);
$top = array_search($max, $counts);
var_dump($max, $top);
/*
int(2)
string(4) "test"
*/

If you wish to cater for multiple most-frequent values, then something like the following would work:

$code = array("test" , "cat" , "cat", "test" , "this", "that", "then");
$counts = array_count_values($code);
$max = max($counts);
$top = array_keys($counts, $max);
var_dump($max, $top);
/*
int(2)
array(2) {
  [0]=>
  string(4) "test"
  [1]=>
  string(3) "cat"
}
*/
查看更多
萌系小妹纸
4楼-- · 2020-06-23 18:47
$code = Array("test" , "cat" , "test" , "this", "that", "then");

function array_most_common($input) { 
  $counted = array_count_values($input); 
  arsort($counted); 
  return(key($counted));     
}

echo '<pre>';
print_r(array_most_common($code));
查看更多
登录 后发表回答