Mysql
 sql >> Base de données >  >> RDS >> Mysql

comment utiliser une chaîne comme formule pour des calculs mathématiques en php ?

Malheureusement, vous devez l'évaluer.

Et si les valeurs sont comme :

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

Vous voudrez peut-être les isoler car vous devrez extract() les utiliser s'il y en a plus de 3, etc., l'encapsulation dans la fonction/fermeture fonctionnerait.

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

Ou simplement :

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

Mais vous polluez votre table de variables globales avec ce qui est extrait, causant potentiellement plus de problèmes.

Bien que n'utilisez pas eval si la formule est défini par l'utilisateur, ou vous aurez des problèmes de sécurité.