Kumulative Summe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuellen element
array
befehl
bilden
code
dank
datum
funktion
integer not
null
nutz
punkt
richtige syntax
schleife
summe
tag
vermitteln
vorherigen elemente
wahrscheinlichkeit
wert integer not
-
Moin!
Ich möchte gerne mit PHP in einem tag/array">Array eine kumulative Summe bilden. Also soll zu dem aktuellen Element immer noch alle vorherigen Elemente hinzugerechnet werden.
Beispiel:
$elemente = array(2, 5, 8);
$kumsumme = array(2, 7, 15);
Habt ihr ne Ahnung, ob es dafür einen Befehl in PHP gibt? Und wenn ja welchen? Denn sogar mein Taschenrechner TI-83 kann das und dann sollte es mit PHP doch eigentlich auch gehen -.- -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Nein, gibt es nicht. Schleife machen:
<? function kumsumme(arr) { kumsum[0] = arr[0]; for(int i = 1; i < count(arr); i++) { kumsum[i] = arr[i] + kumsum[i-1]; } return kumsum; } ?>
Bin gerade in Javascript drinne, deswegen ist die Syntax vielleicht nicht 100% korrekt, aber sollte reichen, um die Idee zu vermitteln.
Beitrag geändert: 1.9.2008 13:24:46 von merovius -
Ah... cool, dass du mir gleich ne Funktion gebastelt hast, danke :)
Die richtige Syntax (für nachfolgende Sucher):
function kumsumme($arr) { $kumsum[0] = $arr[0]; for($i=1;$i<count($arr);$i++) { $kumsum[$i] = $arr[$i] + $kumsum[$i-1]; } return $kumsum; }
-
Hmm,
also spontan ist mir dazu keine Funktion bekannt und ein Blick in Statistikfunktionen http://de2.php.net/manual/en/book.stats.php förderte auch nichts zu Tage.
Allerdings ist dies mit SQL möglich... Falls du also die Daten ehh aus einer Datenbank holst könntest du folgendes machen:
USE tempdb GO CREATE TABLE SummeTest ( recid INTEGER NOT NULL IDENTITY PRIMARY KEY, wert INTEGER NOT NULL ) GO INSERT INTO SummeTest (wert) VALUES (2) INSERT INTO SummeTest (wert) VALUES (5) INSERT INTO SummeTest (wert) VALUES (7) INSERT INTO SummeTest (wert) VALUES (9) GO SELECT a.wert, (SELECT SUM(b.wert) FROM SummeTest b WHERE b.recid <= a.recid) AS 'kumulative Summe' FROM SummeTest a wert kumulative Summe ----------- ---------------- 2 2 5 7 7 14 9 23 (4 row(s) affected)
Grüßle -
Ahja, vielen Dank :) Darauf war ich auch schon gestoßen, aber es ist so, dass in der DB nur Punkte stehen und Punkte_des_Spielers / Alle_Punkte ergibt dann jeweils ne Wahrscheinlichkeit und die muss ich kumulieren^^
Deswegen nutze ich doch den oberen Weg... aber danke :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage