Sfortunatamente, devi valutarlo.
E se i valori sono come:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Potresti voler isolarli poiché dovrai extract()
per utilizzarli se ce ne sono più di 3 ecc., l'incapsulamento in funzione/chiusura funzionerebbe.
<?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"]);
O semplicemente:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Ma stai inquinando la tua tabella delle variabili globali con ciò che viene estratto, causando potenzialmente più problemi.
Anche se non utilizzare eval se la formula è definito dall'utente, altrimenti si verificheranno problemi di sicurezza.