Thật không may, bạn cần phải đánh giá nó.
Và nếu các giá trị như sau:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Bạn có thể muốn cô lập chúng vì bạn sẽ cần extract()
chúng ra để sử dụng nếu có nhiều hơn thì 3, v.v., đóng gói trong hàm / đóng sẽ hoạt động.
<?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"]);
Hoặc chỉ:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Nhưng bạn đang làm ô nhiễm bảng biến toàn cục của mình với những gì được trích xuất, có khả năng gây ra nhiều vấn đề hơn.
Mặc dù không sử dụng eval nếu công thức do người dùng xác định, nếu không bạn sẽ gặp vấn đề về bảo mật.