Werte in ein Array einlesen
Devi
- php
Hallo,
ich brauche dringend Hilfe. Wie kann ich eine X-beliebige Menge von Zahlen in ein Array einlesen und anschließend summieren?
Ich habe schon alles mögliche ausprobiert, aber das klappt alles nicht.
Die Zahlen werden vorher aus einer DB (while Schleife)ausgelesen und bearbeitet. Nun sollen nur bestimmte Zahlen (durch if($var= irgendwas) ) werden nur bestimmte Zahlen selektiert... Diese sollen nun summiert werden. Im Moment habe ich diese Zahlen erstmal in einer temporäre Tabelle gespeichert und dann mit SUM() wieder ausgelesen. Aber es gibt doch bestimmt eine andere Lösung?! Wer hat da eine Idee?
Gruss
Devi
Hi,
Code:
$summe=0;
while(...){
if($var=...){
$arrayvar[]=$var;
$summe+=$var;
}
}
Für das Summieren brauchst du kein Array, aber vielleicht ja noch für etwas anderes :-)
MfG, Kay
Hi Kay,
es gibt auch eine Php-Funktion die das übernimmt:
$a = array(2, 4, 6, 8);
echo "sum(a) = ".array_sum($a)."\n";
$b = array("a"=>1.2,"b"=>2.3,"c"=>3.4);
echo "sum(b) = ".array_sum($b)."\n";
Obiges Programm wird folgendes ausgeben:
sum(a) = 20
sum(b) = 6.9
http://www.php.net/manual/de/function.array-sum.php
Viele Grüße von der annA
Hi,
das ist mir schon völlig klar. Bei deinem Beispiel müssen aber die Zahlen bekannt sein. Wenn du dir die Werte erst per while-Schleife aus einer DB holst, kannst du auch gleich in der Schleife mit $summe+=$wert addieren :-)
MfG, Kay
Hi,
ich habe das jetzt mal ausprobiert, es es klappt einfach nicht. Entweder ich erhalte als Ausgabe alle zu addierenden Werte oder nur den Letzten, wenn ich die While- Schleife vor der Ausgabe enden lasse.
hier mal das Script:
$res_time1 = mysql_query("SELECT ip, MIN(zeit), MAX(zeit) FROM files WHERE domain='$domain' AND (datum BETWEEN '$b_dat' AND '$e_dat') GROUP BY ip",$con);
while ($erg_time1 = mysql_fetch_row($res_time1))
{
$MinTime = GetTimeDiff($erg_time1[1]);
$MaxTime = GetTimeDiff($erg_time1[2]);
$time_diff = ($MaxTime-$MinTime);
$summe=0;
if ($time_diff != 0)
{
$arrayvar[]=$time_diff;
$summe+=$time_diff;
}
echo "$summe <br>";
}
was ist falsch, dass das nicht funzt?
Gruss Devi
Hi Devi,
tja, eigentlich nix. aber vielleicht ist $time_diff keine klar definierte Integer-Variable. Versuch' mal folgendes:
$summe+=intval($time_diff);
MfG, Kay
Hi Key
funzt leider auch net. Die Zahlen werden einfach nicht summiert.
Gruss Devi
Hi Devi,
hast du dir mal $time_diff bei jedem Schleifendurchlauf ausgeben lassen? Was steht so drin???
MfG, Kay
Hi Key,
ich habs jetzt gefunden. Ich habe nochmal in einem anderen Forum gestöbert und dank Deinem Anhaltspunkt bin ich auch fündig geworden.
Lösung sieht nun so aus:
$summe = 0;
if ($time_diff != 0)
{
$arrayvar[]=$time_diff;
foreach ($arrayvar AS $index => $time_diff)
{
$suma_summe+=$time_diff_suma;
}
}
damit hat es geklappt. Ich danke Dir für Deine Hilfe !!! :)
Gruss Devi