Nikk
Nikk

Reputation: 7891

Get Median Value of an Array's key

How can this function be used to return the median of the keys in an array?

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;
}

With an array like this: $arr = array('5'=>100,'1'=>30,'2'=>80);

The median value should be key 2.

Upvotes: 0

Views: 724

Answers (1)

Ravinder Reddy
Ravinder Reddy

Reputation: 3879

To get median key, You need to calculate median for keys instead of values.

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

Upvotes: 1

Related Questions