Niestety musisz to ocenić.
A jeśli wartości są następujące:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Możesz chcieć je wyizolować, ponieważ będziesz musiał extract()
można je wykorzystać, jeśli jest ich więcej niż 3 itd., Zamknięcie funkcji/zamknięcia będzie działać.
<?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"]);
Lub po prostu:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Ale zaśmiecasz swoją tabelę zmiennych globalnych tym, co zostało wyodrębnione, potencjalnie powodując więcej problemów.
Nie używaj eval, jeśli wzór jest zdefiniowany przez użytkownika, w przeciwnym razie wystąpią problemy z bezpieczeństwem.