Helaas moet je het evalueren.
En als de waarden zijn als:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Misschien wil je ze isoleren, omdat je moet extract()
ze uit om te gebruiken als er meer dan 3 zijn enz., inkapselen in functie/sluiting zou werken.
<?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"]);
Of gewoon:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Maar je vervuilt je globale variabelentabel met wat er is geëxtraheerd, wat mogelijk meer problemen veroorzaakt.
Gebruik eval echter niet als de formule wordt gedefinieerd door de gebruiker, anders krijgt u beveiligingsproblemen.