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"]);
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é.