Sayangnya, Anda perlu mengevaluasinya.
Dan jika nilainya seperti:
$deviceData["devicename"] = [
'a' => 20,
'b' => 30,
'c' => 580
];
Anda mungkin ingin mengisolasinya karena Anda perlu extract()
mereka keluar untuk digunakan jika ada lebih dari 3 dll, enkapsulasi dalam fungsi/penutupan akan berfungsi.
<?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"]);
Atau cukup:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
Tetapi Anda mengotori tabel variabel global Anda dengan apa yang diekstraksi, yang berpotensi menyebabkan lebih banyak masalah.
Meskipun tidak menggunakan eval if rumus ditentukan oleh pengguna, atau Anda akan mengalami masalah keamanan.