sql >> Database teknologi >  >> RDS >> Mysql

hvordan man bruger en streng som formel for matematiske beregninger i php?

Desværre er du nødt til at evaluere det.

Og hvis værdierne er som:

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

Du vil måske isolere dem, da du skal extract() dem ud for at gøre brug af, hvis der er mere end 3 osv., indkapsling i funktion/lukning ville fungere.

<?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 bare:

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

Men du forurener din globale variabeltabel med det, der er udtrukket, hvilket potentielt forårsager flere problemer.

Brug dog ikke eval hvis formlen er defineret af brugeren, ellers vil du have sikkerhedsproblemer.




  1. Søger du efter tilgængelighed med MySQL (og PHP)?

  2. Ajax tilgang til at udfylde en anden dynamisk dropdown baseret på valget i den første

  3. Sender MySQL-forespørgsel via Javascript

  4. Forhindrer JDBC-specifikationen '?' fra at blive brugt som operator (uden for anførselstegn)?