Variablen zusammensetzen und ausführen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variablen zusammensetzen und ausführen

    irgendwie stelle ich mich extrem blöd an. (mag an der uhrzeit liegen)

    Folgendes Problem:

    Diese Variablen kommen aus der Datenbank:

    $summe="50";
    $plusminus="-";
    $count="5";

    jetzt möchte ich das das script

    $summe2="$summe$plusminus$count";

    berechnet und nicht nur anzeigt.

    Also $summe2 sollte dann 45 sein und nicht wie in diesem Fall 50-5

    Ist bestimmt nur ein Formatierungsfehler, aber irgendwie bin ich peinlicherweise z.Zt. zu blöd.

    Danke für eure Hilfe

  • #2
    -> www.php.net/eval

    Comment


    • #3
      Danke scheint ein guter ansatz zu sein, ich probiers.

      Comment


      • #4
        Hm irgendwie scheine ich einen denkfehler zu haben:

        $sumbasket="50";
        $plusminus="-";
        $count="5";

        //Berechnung bei Summe
        $sumbasket2="$sumbasket$plusminus$count";
        eval ("\$sumbasket2 = \$sumbasket2\;");
        echo $sumbasket2;

        Leider zeigt er wieder nur den string an.

        Comment


        • #5
          OK, eval is ne schlechte Idee, damit kommst du noch weniger zurecht ...

          Seh ich richtig, dass $plusminus sowieso nur + oder - sein kann ?
          Dann lass das einfach von einem IF oder switch Auswerten. Denn das, wass du ganz oben versucht hast, ist nur, dass du Zeichenketten zusammenfügst, also weit entfernt von Rechenoperation:

          PHP Code:
          $summe2 $summe.$plusminus.$count
          bewirkt das gleiche

          Comment


          • #6
            Ich dachte das es nur ein formtierungsproblem ist das das script die sache nicht berechnet. meinst du das es da keine "einfachere" möglichkeit als if oder switch gibt - ich hänge da schon in der "20"(übertrieben) if bzw. switch.

            das problem ist - ich möchte in einem shopsystem realisieren wo der admin eingeben kann -

            z.b. Zahlart - kann frei eingegeben werden
            abzug/draufschlagen (plusminus)
            höhe ($count) - also wieviel

            jetzt werden diese werte wieder aus der datenbank ausgelesen und sollen !eigentlich! berechnet werden

            Comment


            • #7
              Also einfacher als mit if/switch isses doch wirklich nicht, ein if und ein elseif bzw. else Block, und die Sache ist erledigt
              Last edited by EEBKiller; 16-09-2005, 21:52.

              Comment


              • #8
                wieso?
                PHP Code:
                $a 10;
                $b 5;
                $op '-';
                $b$op.$b;
                echo 
                $a $b;
                echo 
                '<br />';
                // ----
                $b 5;
                $op '+';
                $b$op.$b;
                echo 
                $a $b
                klappt auch mit strings. liegt afaik daran, dass php keinen type cast kennt. allerdings sollte man die grundzüge der addition beherrschen
                Kissolino.com

                Comment


                • #9
                  Aber 10 Zeilen für so eine Milchmädchen Rechnung ?
                  Mit If hat/Else hat man 5 und mit dem ? : - Operator eine


                  $ergebnis = ($plusminus == "+") ? $summe + $count : $summe - $count;

                  Comment


                  • #10
                    Original geschrieben von EEBKiller
                    Aber 10 Zeilen für so eine Milchmädchen Rechnung ?
                    1. sinds im prinzip nur 2 zeilen ... 10 fürs beispiel, damits auch jeder begreift (hat wohl nicht so ganz geklappt)
                    2. gings mir darum, dass es geht, nicht darum, was unter umständen besser ist
                    3. dürfte es im nanosekundenbereich deutlich schneller sein
                    Kissolino.com

                    Comment


                    • #11
                      Danke für eure hilfe.

                      Comment

                      Working...
                      X