残念ながら、それを評価する必要があります。
そして、値が次のような場合:
$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"]);
または単に:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
しかし、抽出されたものでグローバル変数テーブルを汚染しているため、さらに多くの問題が発生する可能性があります。
ただし、式の場合はevalを使用しないでください がユーザーによって定義されているか、セキュリティ上の問題が発生します。