За съжаление трябва да го оцените.
И ако стойностите са като:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Може да искате да ги изолирате, тъй като ще трябва да extract()
да се използват, ако има повече от 3 и т.н., капсулирането във функция/затваряне ще работи.
<?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"]);
Или просто:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Но вие замърсявате вашата таблица с глобални променливи с това, което е извлечено, което потенциално причинява повече проблеми.
Въпреки че не използвайте eval, ако формулата се определя от потребителя или ще имате проблеми със сигурността.