直接ctrl+V 慢慢试去吧~
<?php
function mostRepeatedValues($array,$length=0){
//1. 计算数组的重复值
$array = array_count_values($array);
//2. 根据重复值倒排序
arsort($array);
if($length>0){
//3. 返回前 $length 重复值
$array = array_slice($array, 0, $length, true);
}
//取所有下标
$keys=array_keys($array);
return $keys;
}
//$array = array(1, 1, 54, 3,4, 3,4, 3, 14, 3,4, 3,7,888,8,888,8,888,8,888,8,888,8,888,8,888,8,888,8,888,8,888,8,888,9,12,45,66,5,7,888,9,2,45);
$t=microtime(true);
$array=array();
for ($i2=1; $i2<=10; $i2++){
for ($i=1; $i<=20000; $i++){
array_push($array,$i);
array_push($array,'888');
}
}
$t=microtime(true)-$t;$t=$t*1000;
echo "运算".count($array)."个成员,耗时:".$t."<br>";
$counts=mostRepeatedValues($array,5);//要取重复次数最多的前多少个
print_r($counts);
echo $counts[0];