我有3个变量和一个公式,可信用户需要能够通过CMS定义。这个公式会随着时间的推移而改变,变量的值来自数据库。
我怎样才能算出计算的答案?我认为eval是相关的,但不能很好地发挥作用

$width = 10;
$height = 10;
$depth = 10;

$volumetric = '(W*H*D)/6000';

$volumetric = str_replace('W', $width, $volumetric);
$volumetric = str_replace('H', $height, $volumetric);
$volumetric = str_replace('D', $depth, $volumetric);

eval($volumetric);

这给了我:
Parse error: parse error in /path/to/vol.php(13) : eval()'d code on line 1

最佳答案

您需要非常小心eval,因为您允许人们直接在服务器上运行命令。确保read the documentation彻底了解风险。
也就是说,您需要将结果赋给一个变量。你也可以整理你正在做的事情,你只需要一个str_replace。试试这个:

$width = 10;
$height = 10;
$depth = 10;

$volumetric = '(W*H*D)/6000';
$volumetric = str_replace(['W', 'H', 'D'], [$width, $height, $depth], $volumetric);

eval("\$result = $volumetric;");
echo $result;

10-06 04:02