timon peters: eval() richtig verwenden

Hallo erstmal;

Ich habe da ein problem bei der verwendung der funktion eval();

ich habe eine funktion geschrieben, die namen in mathemathische gleichungen umwandelt (zb. übergebe ich der funktion den wert 'der affe' und bekomme als rückgabe '1* 1* 1* 30 * 0.5* 0.3* 0.3* 1'). nun weiss ich leider nicht, wie man diese gleichung, die als string vorliegt, richtig ausrechnet. ich habe gelesen, dass man dafür die funktion eval() verwenden muss, habe aber nirgends gefunden, wie man das genau machen soll.

Es wäre nett, wenn mir da jemand helfen könnte.

danke

Timon

  1. n'abend,

    Hallo erstmal;

    Ich habe da ein problem bei der verwendung der funktion eval();

    ich habe eine funktion geschrieben, die namen in mathemathische gleichungen umwandelt (zb. übergebe ich der funktion den wert 'der affe' und bekomme als rückgabe '1* 1* 1* 30 * 0.5* 0.3* 0.3* 1'). nun weiss ich leider nicht, wie man diese gleichung, die als string vorliegt, richtig ausrechnet. ich habe gelesen, dass man dafür die funktion eval() verwenden muss, habe aber nirgends gefunden, wie man das genau machen soll.

    im Handbuch zu schauen wäre ein Anfang: eval()

    ansonsten müsste folgendes etwa das tun, was du erwartest:

    $ergebnis = 0;  
    $rechnung = '1* 1* 1* 30 * 0.5* 0.3* 0.3* 1';  
    eval("\$ergebnis = " . $rechnung . ";");  
    
    

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. vielen dank ...

      ich hatte zwar schon im handbuch geschaut, war aber daraus nicht so recht schlau geworden. jetzt hab ich verstanden und den sinn kapiert.

      1. n'abend,

        ich hatte zwar schon im handbuch geschaut, war aber daraus nicht so recht schlau geworden. jetzt hab ich verstanden und den sinn kapiert.

        anmerken sollte man aber noch: übertreib es mit eval() nicht. Es gibt wenige berechtigte Anwendungsfälle für eval(). Überprüfe *genau* was du eval() zum Fraß vor wirfst, sonst wird es zu drEvil() und birgt große Gefahren.

        weiterhin schönen abend...

        --
        Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
  2. Hi,

    kann mir kaum vorstellen dass du dir das eval() nicht einsparen kannst. Eigentlich müsstest du doch beim erstellen der Gleichung die Zahlenwerte bereits haben und kannst sie bereits da aufmultiplizieren.

    Marc