sql >> Database >  >> RDS >> Mysql

hoe gebruik je een string als formule voor wiskundige berekeningen in php?

Helaas moet je het evalueren.

En als de waarden zijn als:

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

Misschien wil je ze isoleren, omdat je moet extract() ze uit om te gebruiken als er meer dan 3 zijn enz., inkapselen in functie/sluiting zou werken.

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

Of gewoon:

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

Maar je vervuilt je globale variabelentabel met wat er is geëxtraheerd, wat mogelijk meer problemen veroorzaakt.

Gebruik eval echter niet als de formule wordt gedefinieerd door de gebruiker, anders krijgt u beveiligingsproblemen.




  1. Kan MySQL-container niet verbinden met Tomcat-container in docker

  2. SQL-database voor verwante gezinsleden

  3. MySQL-update wijzigen van meerdere kolommen is niet-atomair?

  4. delphi dxExpress MySQL:ongeldige LAST_INSERT_ID waarde