Mysql
 sql >> Database >  >> RDS >> Mysql

come usare una stringa come formula per i calcoli matematici in php?

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"]);

https://3v4l.org/I2rbk

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.