sql >> データベース >  >> RDS >> Mysql

PHPで数学計算の数式として文字列を使用する方法は?

    残念ながら、それを評価する必要があります。

    そして、値が次のような場合:

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

    extract()が必要になるため、これらを分離することをお勧めします。 3つ以上ある場合などに使用するために、機能/クロージャにカプセル化すると機能します。

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

    または単に:

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

    しかし、抽出されたものでグローバル変数テーブルを汚染しているため、さらに多くの問題が発生する可能性があります。

    ただし、の場合はevalを使用しないでください がユーザーによって定義されているか、セキュリティ上の問題が発生します。




    1. MySQLのメモリ使用量を理解するとPHP(PDO)になります

    2. PostgreSQLの日付に序数標識を追加する

    3. 最適化フェーズと逃した機会

    4. postgresからmysqlに移行すると、奇妙なエラーが発生しますMysql2 ::Error:MySQLサーバーがなくなりました