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