Calculating Median and Average w/ PHP

Here’s some handy functions for calculating the median or average of an array of numbers. The median is the number in the middle of an array of numbers, or when the number of items in the array is even, the median is the average of the two numbers that straddle the middle.

The below was completely stolen from Matt Jones and all credit is his.

<?php
function calculate_median($arr) {
    sort($arr);
    $count = count($arr); //total numbers in array
    $middleval = floor(($count-1)/2); // find the middle value, or the lowest middle value
    if($count % 2) { // odd number, middle is the median
        $median = $arr[$middleval];
    } else { // even number, calculate avg of 2 medians
        $low = $arr[$middleval];
        $high = $arr[$middleval+1];
        $median = (($low+$high)/2);
    }
    return $median;
}

function calculate_average($arr) {
    $count = count($arr); //total numbers in array
    foreach ($arr as $value) {
        $total = $total + $value; // total value of array numbers
    }
    $average = ($total/$count); // get average value
    return $average;
}

$home_values_array = array(
     "100000", 
     "120000", 
     "150000", 
     "157000", 
     "180000", 
     "198000", 
     "220000", 
     "1450000"
);

$median_home_value = calculate_median($home_values_array);
$average_home_value = calculate_average($home_values_array);

echo '<p>Median home value: $'.number_format($median_home_value).'<br />';
echo 'Average home value: $'.number_format($average_home_value).'</p>';
?>

This would output:

Median home value: $168,500
Average home value: $321,875

Snippets and tagged