获取数组键的中值

问题描述 投票:-1回答:1

如何使用此函数返回数组中键的中位数?

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

php arrays
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.