Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie verwende ich eine Zeichenfolge als Formel für mathematische Berechnungen in PHP?

Leider müssen Sie es auswerten.

Und wenn die Werte wie folgt sind:

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

Möglicherweise möchten Sie sie isolieren, da Sie extract() benötigen sie aus, um sie zu verwenden, wenn es mehr als 3 usw. gibt, würde das Einkapseln in Funktion/Schließung funktionieren.

<?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

Oder einfach:

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

Aber Sie verunreinigen Ihre globale Variablentabelle mit dem, was extrahiert wird, was möglicherweise mehr Probleme verursacht.

Verwenden Sie jedoch nicht eval, wenn die Formel wird vom Benutzer definiert, oder Sie haben Sicherheitsprobleme.