sql >> Databasteknik >  >> RDS >> Mysql

hur man använder en sträng som formel för matematiska beräkningar i php?

Tyvärr måste du utvärdera det.

Och om värdena är som:

$deviceData["devicename"] = [
    'a' => 20,
    'b' => 30,
    'c' => 580
];

Du kanske vill isolera dem eftersom du måste extract() dem ut för att använda om det finns fler än 3 etc, inkapsling i funktion/stängning skulle fungera.

<?php
$formula = '(($a+$b)/$c)';

$deviceData["devicename"] = ['a' => 20, 'b' => 30, 'c' => 580];

$runFormula = function ($formula, $data) { 
    extract($data); 
    return eval('return '.$formula.';'); 
};

echo $runFormula($formula, $deviceData["devicename"]);

https://3v4l.org/I2rbk

Eller bara:

extract($deviceData["devicename"]); 
echo eval('return '.$formula.';'); 

Men du förorenar din globala variabeltabell med det som extraheras, vilket kan orsaka fler problem.

Använd inte eval om formeln definieras av användaren, annars får du säkerhetsproblem.




  1. MySQL wait_timeout-variabel - GLOBAL vs SESSION

  2. Design av rekommendationsmotordatabasen?

  3. Hur man får en rad i SQLite efter index (inte efter id)

  4. Node MySQL exekvera flera frågor så snabbt som möjligt