Infelizmente, você precisa avaliá-lo.
E se os valores forem como:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Você pode querer isolá-los, pois precisará
extract()
usá-los se houver mais de 3 etc., o encapsulamento em função/fechamento funcionaria. <?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"]);
https://3v4l.org/I2rbk
Ou apenas:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Mas você está poluindo sua tabela de variáveis globais com o que é extraído, potencialmente causando mais problemas.
Embora não use eval se a fórmula é definido pelo usuário ou você terá problemas de segurança.