Devi: Werte in ein Array einlesen

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. Hi Devi,

            tja, eigentlich nix. aber vielleicht ist $time_diff keine klar definierte Integer-Variable. Versuch' mal folgendes:

            $summe+=intval($time_diff);

            MfG, Kay

            1. Hi Key

              funzt leider auch net. Die Zahlen werden einfach nicht summiert.

              Gruss Devi

              1. Hi Devi,

                hast du dir mal $time_diff bei jedem Schleifendurchlauf ausgeben lassen? Was steht so drin???

                MfG, Kay

                1. 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