Verschiedene Mittelwerte berechnen

Anbei eine kleine Funktion, die verschiedene Mittelwerte berechnet:

// ########################################################################
// Berechnung von diversen Mittelwerten
// Parameter: 1. Array mit beliebig vielen Integerzahlen (mind. 1)
//				  2. Typ des zu berechnenden Mittelwerts
//                A = Arithm. Mittelwert
//                E = Modus (größter Wert)
//                M = Median
//                Q = Quadratisches Mittel
//                C = Kubisches Mittel
//						H = Harmonisches Mittel
//                G = Geometrisches Mittel
// Ergebnis: Mittelwert oder bei Fehler -999999
// s. a. https://de.wikipedia.org/wiki/Mittelwert#Sonstige_Mittelwerte
// V 1.0 (c) 6/2016  udegens   knx-mh@gmx.de
// ########################################################################
function X17_ComputeMeans($arry, $type = 'A')
{
    $sum = 0;
    $cnt = 0;
    $m = -999999; // ERROR
    $c = count($arry);
    if($c == 0)
        return $m;
    if($type == 'A' or $type == 'a')
    {
        foreach($arry as $val)
        {
            $sum += $val;
            $cnt++;
        }
        if($cnt > 0)
            $m = (int)($sum / $cnt);
    }
    else if($type == 'E' or $type == 'e')
    {
        sort($arry);
        $c = count($arry);
        $highidx = 0;
        $highcnt = 0;
        for($i=0; $i<$c; $i++)
        {
            for($j=$i+1; $j<$c; $j++)
            {
                $cnt = 0;
                //echo "Vergleiche: $arry[$i] mit $arry[$j]<br>";
                if($arry[$i] == $arry[$j])
                {
                    //echo "Gleichheit   ";
                    $cnt++;
                    //echo "<br>";
                    continue;
                }
                else
                {
                    //echo "Ungleichheit ";
                    if($cnt >= $highcnt)
                    {
                        $highcnt = $cnt;
                        $highidx = $i-1;
                        $i = $j;
                        //echo "<br>";
                        continue;
                    }

                }

            }
        }
        $m = $arry[$highidx];
    }
    else if($type == 'M' or $type == 'm')
    {
        sort($arry);
        if($c % 2 == 0) // even
        {
            $idx = $c / 2;
            $sum = $arry[$idx-1] + $arry[$idx];
            $m = $sum / 2;
        }
        else
        {
            $idx = (int)($c / 2) + 1;
            $m = $arry[$idx];
        }
    }
    else if($type == 'Q' or $type == 'q')
    {
        foreach($arry as $val)
        {
            $sum += $val*$val;
            $cnt++;
        }
        if($cnt > 0)
            $m = (int)(sqrt($sum/$cnt));
    }
    else if($type == 'C' or $type == 'c')
    {
        foreach($arry as $val)
        {
            $sum += $val*$val*$val;
            $cnt++;
        }
        if($cnt > 0)
            $m = (int)(pow($sum, 1/3));
    }
    else if($type == 'H' or $type == 'h')
    {
        foreach($arry as $val)
        {
            $sum += 1/($val*$val);
            $cnt++;
        }
        if($cnt > 0)
            $m = (int)($cnt/$sum);
    }
    else if($type == 'G' or $type == 'g')
    {
        $sum = 1;
        foreach($arry as $val)
        {
            $sum *= $val;
            $cnt++;
        }
        if($cnt > 0)
            $m = (int)(pow($sum, 1/$cnt));
    }
    return (int)$m;
}// ###

Hi,

das wäre doch was für ein Modul.

… vielleicht später mal.