prepare($sql); $stmt->execute(); $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); //total measurement internal array $total_measurement = []; foreach ($messages as $message){ //Cleanup input array $message = json_decode($message['description'],true); $message = $message["doubletestvalues"]; foreach ($message as $measure){ //Filter out correct measurements if ($measure['pass'] === true){ $total_measurement[$measure['name']][] = $measure['measure']; } } } //result array $total_results = []; //print "
";
//print_r($total_measurement);
//print "
"; foreach ($total_measurement as $key => $value){ $total_results[$key]['average'] = average($value); $total_results[$key]['median'] = calculateMedian($value); $total_results[$key]['stdev'] = standDeviation($value); } print "
";
print_r($total_results);
print "
"; function standDeviation($arr) { $num_of_elements = count($arr); $variance = 0.0; // Calculate mean using array_sum() method $average = array_sum($arr) / $num_of_elements; foreach($arr as $i) { // Sum of squares of differences between all numbers and means. $variance += pow(($i - $average), 2); } return (float)sqrt($variance / $num_of_elements); } function average($arr) { $num_of_elements = count($arr); $average = array_sum($arr) / $num_of_elements; return $average; } function calculateMedian($array) { if (empty($array)) { return null; } else { sort($array); $lowMiddle = $array[floor((count($array) - 1) / 2)]; $highMiddle = $array[ceil((count($array) - 1) / 2)]; return ($lowMiddle + $highMiddle) / 2; } } ?>