Durchschnittswert eines Arrays
Einklappen
X
-
Ja vielen Dank, aber man muss es ja nicht gleich übertreiben. Funktioniert wunderbar. Nur die letzte Version werde ich nicht verwenden, wo einige ja schon mühe mit dem ersten Quellcode hatten.
-
Das ist noch halbwegs übersichtlich, im Vergleich zu
PHP-Code:for ($i=0; $i<$max=max(count($a),count($b)); $e[]=($sum+=$a[$i]+$b[$i])/($i+=1));
Einen Kommentar schreiben:
-
Vielen Dank, in etwa so was habe ich gesucht, ich meine zur Not wäre meins ja gegangen, aber es sollte ja auch halbwegs effizient sein.
Wobei ich schon sagen muss, das Übersicht auch nicht total unwichtig ist.
Gruß Thoma
Denke so ist es halbwegs übersichtlich und kurz:
PHP-Code:<?
$a = array(1,2,3);
$b = array(4,5,6);
$max = max(count($a),count($b));
$sum = 0;
for ($i=0; $i<$max ; $i++)
{
$sum = $sum + ($a[$i]+$b[$i]);
$e[] = $sum /($i+1);
}
print_r($e);
?>Zuletzt geändert von Thoma; 02.01.2006, 00:32.
Einen Kommentar schreiben:
-
Dachte der Quelltext würde sich mehr oder weniger selbst erklären.
$a und $b sind Arrays mit beliebigen ganzzahligen Werten, die Werte mit dem selben Index sollen jeweils addiert werden.
also:
$c[0] = $a[0]+$b[0];
$c[1] = $a[1]+$b[1];
$c[2] = $a[2]+$b[2];
...
in $e steht der Durchschnitt.
also
$e[0] = (1+4)/1 = 5
$e[1] = (1+4+2+5)/2 = 6
$e[2] = (1+4+2+5+3+6)/3 = 7
um es vielleicht etwas einfacher zu machen, jetzt nur der Durchschnitt ohne Addition.
Beispiel:
$a = array(1,3,5);
$e = array(1,2,3);
Die Berechnung sieht hier so aus:
$e[0] = (1)/1 = 1
$e[1] = (1+3)/2 = 2
$e[2] = (1+3+5)/3 = 3
Natürlich müssen die Zahlen im array $e nicht immer Ganzzahlig sein.
Einen Kommentar schreiben:
-
Mir ist egal, was du vorhast. Ich sehe, was bei obigem Code rauskommt und dass dein error_reporting keine Notices ausgibt - sonst gäbe es "undefined variable c".
Also klappt auch dies hier:
Macht genau das selbe, nutzt lediglich ein paar Features der Sprache. Unschön, aber kurz.PHP-Code:$a = array(1,2,3);
$b = array(4,5,6);
for ($i=0, $max=max(count($a),count($b)); $i<$max; $i++) {
$e[]=($sum=($a[$i]+$b[$i])+$sum)/($i+1);
}
print_r($e);
Einen Kommentar schreiben:
-
hab ich jetzt auch nicht verstanden, was du möchtest.
arrays sind mengen, und eine addition ist in dem sinne nicht das gleiche, wie eine vereinigung. was jetzt "vorangegangene" werte sind ist mir ebenso unklar wie das, was du berechnest und was $a, $b und $e sein soll.
Einen Kommentar schreiben:
-
Wie ich oben bereits schrieb, werden der beiden Arrays zunächst addiert (1+4=5).
Ich dachte, es gäbe vielleicht etwas einfacheres, sowohl um in zwei Arrays das jeweils n-te Element zu addieren, wie auch einen laufenden Durchschnitt zu bilden.
Einen Kommentar schreiben:
-
dann nimm doch Deine funktionalität,
warum allerdings der Durchschnitt von 4,1 = 5 sein soll das weisst nur Du?
Einen Kommentar schreiben:
-
Ich will nicht den Durchschnitt des ganzen Arrays, sondern immer den der vorangegangenen Werte.
Im Beispiel wäre das dann:
$a = array(1,2,3);
$b = array(4,5,6);
$e = array(5,6,7);
Es kann aber auch vorkommen, das die Arrays A und B unterschiedlich viele Werte haben.
Beispiel:
$a = array(3,2,4,4);
$b = array(4,5,6);
$e = array(7,7,8,7);
Einen Kommentar schreiben:
-
den durchschnitt bekommste mit array_sum() und count() schon mal einfacher.
Einen Kommentar schreiben:
-
Durchschnittswert eines Arrays
Hallo Leute,
erst mal nen Frohes neues Jahr.
Ich möchte zwei Arrays addieren und den Durchschnitt in einen neuen Array ablegen:
Nun wollte ich fragen ob das vielleicht auch einfacher geht oder ob es vielleicht eine Funktion dafür gibt.PHP-Code:<?
$a = array(1,2,3); // Array A
$b = array(4,5,6); // Array B
$e = array(); // Ergebnis-Array
$a = array_pad ($a, max(count ($a),count ($b)),0); // Array A und B
$b = array_pad ($b, max(count ($a),count ($b)),0); // gleich lang machen
for ($i=0; $i<(count ($a)) ; $i++)
{
$c = $c + ($a[$i]+$b[$i]);
$d = $c /($i+1);
array_push ($e, $d); // Array e füllen
}
print_r($e); // Array e ausgeben
?>
Mit freundlichen Grüßen
ThomaStichworte: -
Einen Kommentar schreiben: