Bohužel to musíte vyhodnotit.
A pokud jsou hodnoty jako:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Možná je budete chtít izolovat, protože budete muset extract()
Pokud je jich více než 3 atd., zapouzdření ve funkci/uzavření by fungovalo.
<?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"]);
Nebo jen:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Ale znečišťujete svou tabulku globálních proměnných tím, co bylo extrahováno, což může způsobit další problémy.
I když nepoužívejte eval if vzorec je definován uživatelem, jinak budete mít bezpečnostní problémy.