İstatistik Sınıfı ile Medyan ve Yüzdelik Almak

<?php 
class istatistik{
	function ortanca($veri){
		$ortanca = $this->yuzdebirlik($veri,50);
		return $ortanca;
	}
	function yuzdebirlik($veri,$yuzdebirlik){
		if( 0 < $yuzdebirlik && $yuzdebirlik < 1 ) {
			$p = $yuzdebirlik;
		}else if( 1 < $yuzdebirlik && $yuzdebirlik <= 100 ) {
			$p = $yuzdebirlik * .01;
		}else {
			return "";
		}
		$say = count($veri);
		$tumindeks = ($say-1)*$p;
		$sayiindex = intval($tumindeks);
		$deger = $tumindeks - $sayiindex;
		sort($veri);
		if(!is_float($deger)){
			$sonuc = $veri[$sayiindex];
		}else {
			if($say > $sayiindex+1)
				$sonuc = $deger*($veri[$sayiindex+1] - $veri[$sayiindex]) + $veri[$sayiindex];
			else
				$sonuc = $veri[$sayiindex];
		}
		return $sonuc;
	}
	function ceyrekler($veri) {
		$q1 = $this->yuzdebirlik($veri,25);
		$q2 = $this->yuzdebirlik($veri, 50);
		$q3 = $this->yuzdebirlik($veri, 75);
		$ceyrek = array ( '25' => $q1, '50' => $q2, '75' => $q3);
		return $ceyrek;
	}
	
}
	$s = new istatistik();
	$veri = array(12,34,56);
	echo "25. Yüzdebirlik = ".$s->yuzdebirlik($veri,25)."<br />";
	echo "Ortanca (50. yuzdebirlik) = ".$s->ortanca($veri)."<br />";
	echo "95. Yüzdebirlik = ".$s->yuzdebirlik($veri,95)."<br />";
	echo "Çeyrek(25., 50., 75. yuzdebirlik) = ".implode(",	", $s->ceyrekler($veri));
?>

Çıktısı

25. Yüzdebirlik = 23
Ortanca (50. yuzdebirlik) = 34
95. Yüzdebirlik = 53.8
Çeyrek(25., 50., 75. yuzdebirlik) = 23,	34,	45