sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo usar una cadena como fórmula para cálculos matemáticos en php?

Lamentablemente, debe evaluarlo.

Y si los valores son como:

$deviceData["devicename"] = [
    'a' => 20,
    'b' => 30,
    'c' => 580
];

Es posible que desee aislarlos, ya que necesitará extract() si hay más de 3, etc., encapsularlos en función/cierre funcionarí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"]);

https://3v4l.org/I2rbk

O simplemente:

extract($deviceData["devicename"]); 
echo eval('return '.$formula.';'); 

Pero está contaminando su tabla de variables globales con lo que se extrae, lo que puede causar más problemas.

Aunque no utilice eval si la fórmula está definido por el usuario, o tendrá problemas de seguridad.