如何使用此函数返回数组中键的中位数?
function array_median($array) {
$iCount = count($array);
$middle_index = floor($iCount / 2);
sort($array, SORT_NUMERIC);
$median = $array[$middle_index];
if ($iCount % 2 == 0) {
$median = ($median + $array[$middle_index - 1]) / 2;
}
return $median;
}
使用这样的数组:
$arr = array('5'=>100,'1'=>30,'2'=>80);
中值应为关键2
。
答案 0 :(得分:1)
要获得中位数键,您需要计算键的中位数而不是值。
function array_median($array) {
// get keys of passed array
$array = array_keys($array);
$iCount = count($array);
$middle_index = floor($iCount / 2);
sort($array, SORT_NUMERIC);
$median = $array[$middle_index];
if ($iCount % 2 == 0) {
$median = ($median + $array[$middle_index - 1]) / 2;
}
return $median;
}
$arr = array('5'=>100,'1'=>30,'2'=>80);
echo array_median($arr); // output 2