Php 获取$n个最大值
直截了当- 如果$n=3 输入为-Php 获取$n个最大值,php,Php,直截了当- 如果$n=3 输入为- Array ( [04] => 3 [07] => 4 [01] => 5 [06] => 5 [05] => 5 [03] => 6 [08] => 6 [02] => 7 [09] => 8 [12] => 9 [10] => 10 [15] => 10 [19] => 11
Array
(
[04] => 3
[07] => 4
[01] => 5
[06] => 5
[05] => 5
[03] => 6
[08] => 6
[02] => 7
[09] => 8
[12] => 9
[10] => 10
[15] => 10
[19] => 11
[20] => 11
[13] => 12
[21] => 12
[16] => 13
[14] => 14
[22] => 14
[23] => 15
[11] => 15
[00] => 15
[17] => 17
[18] => 17
)
输出应为-
Array
( [14] => 14
[22] => 14
[23] => 15
[11] => 15
[00] => 15
[17] => 17
[18] => 17
)
谢谢大家的帮助。快速破解Shakti的功能。但是,这可靠吗
arsort($array);
function output($array,$n)
{
$c=0;
$newArray=array();
foreach ($array as $key => $value)
{
if ($c == $n)
{
$newArray[$key]=$value;
return $newArray;
}
if (!in_array($value, $newArray))
{
$c++;
}
$newArray[$key]=$value;
}
}
function getMaxValues( $array, $total ) {
arsort( $array );
$count = 0;
$return = array();
$total++;
foreach ($array as $key => $value) {
if ( !in_array( $value, $return ) )
$count++;
$return[ $key ] = $value;
if ( $count == $total ) {
array_pop($return);
return $return;
}
}
}
快速破解Shakti的函数。但是,这可靠吗
function getMaxValues( $array, $total ) {
arsort( $array );
$count = 0;
$return = array();
$total++;
foreach ($array as $key => $value) {
if ( !in_array( $value, $return ) )
$count++;
$return[ $key ] = $value;
if ( $count == $total ) {
array_pop($return);
return $return;
}
}
}
比如:
function biggest_n(array $a, $n)
{
$u = array_unique($a);
if (count($u) <= $n) return $a;
rsort($u);
$val = $u[$n - 1];
return array_filter($a, function($e) use($val) { return $e >= $val; });
}
比如:
function biggest_n(array $a, $n)
{
$u = array_unique($a);
if (count($u) <= $n) return $a;
rsort($u);
$val = $u[$n - 1];
return array_filter($a, function($e) use($val) { return $e >= $val; });
}
非常快,没有循环,只需要内置PHP函数 function getMaxValues($array, $number) { $tmp = $array; asort($array); $values_cnt = array_count_values($array); $max_val_cnt = array_slice($values_cnt, count($values_cnt)-$number); $max_val_cnt = array_sum($max_val_cnt); $ret = array_slice($tmp, count($tmp)-$max_val_cnt, $max_val_cnt, true); return $ret; }
非常快,没有循环,只需要内置PHP函数 function getMaxValues($array, $number) { $tmp = $array; asort($array); $values_cnt = array_count_values($array); $max_val_cnt = array_slice($values_cnt, count($values_cnt)-$number); $max_val_cnt = array_sum($max_val_cnt); $ret = array_slice($tmp, count($tmp)-$max_val_cnt, $max_val_cnt, true); return $ret; }
如果你能解释一下输出,那就太好了。我想你想要的是一个数组,它只包含n个不同的最大值14,15,17的项。是的,这正是我想要的。如果你能解释一下输出,那就太好了。我想你想要的是一个数组,该数组只包含n个不同的最大值14,15,17的项。是的,这正是我想要的。对于上述输入,函数输出数组[17]=>17[18]=>17[23]=>15[00]=>15[11]=>15[14]=>14[22]=>14缺失。@KPL:-现在,这就是您要查找的输入,函数输出数组[17]=>17[18]=>17[23]=>15[00]=>15[11]=>15[14]=>14缺少[22]=>14。@KPL:-现在,这就是您要查找的