Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como usar uma string como fórmula para cálculos matemáticos em php?


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.