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