sql >> Databáze >  >> RDS >> Mysql

jak použít řetězec jako vzorec pro matematické výpočty v php?

Bohužel to musíte vyhodnotit.

A pokud jsou hodnoty jako:

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

Možná je budete chtít izolovat, protože budete muset extract() Pokud je jich více než 3 atd., zapouzdření ve funkci/uzavření by fungovalo.

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

Nebo jen:

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

Ale znečišťujete svou tabulku globálních proměnných tím, co bylo extrahováno, což může způsobit další problémy.

I když nepoužívejte eval if vzorec je definován uživatelem, jinak budete mít bezpečnostní problémy.




  1. Operátor SQLite UNION

  2. Jak získám seznam všech tabulek v databázi pomocí TSQL?

  3. Postgresql Aktuální časové razítko při aktualizaci

  4. Vnořené třídy - CustomRowMapper !! Už to není problém!! - Část 2