array_count_values随机匹配值

时间:2014-11-09 10:49:50

标签: php

我知道以下代码

<?php
    $array = array("1", "hello", "1", "world", "hello");    
    print_r(array_count_values($array));
?>

将输出:

Array
(
    [1] => 2
    [hello] => 2
    [world] => 1
)

我想检索重复次数最多的值,或者如果有多个重复的匹配实例,例如“hello”和“1”将它们随机化,而不是检索第一个。

1 个答案:

答案 0 :(得分:1)

直播:http://ideone.com/D1Ydbd

$array = array(1, "hello", 1, "world", "hello",'2','2','2','3','3','3');

$s = array_count_values($array);
$mostRepeated = max($s);

$s = array_filter( $s, function($v) use ($mostRepeated) {
  return $v==$mostRepeated;
});

print_r($s);    
echo array_rand($s);  // randomized

步骤:

  • 找到最高计数
  • 删除频率较低的元素
  • 使用array_rand
  • 随机返回一个元素

请注意,只要存在具有相同值计数的单个或多个条目,我就会将此函数写为透明。