使用PHP中的可变内容进行计算


Calculate with variable content in PHP

我有一个数据库,里面有产品。列为:IDprodnamecalculatecalculate细胞含有($width*$height)(($width+$height)*2)($width*2)等物质

我的PHP脚本包含相同的变量,它们的值分别为$width = 100$height = 200

我的问题是我不能和他们一起计算。如果我从数据库中读取计算部分,并像echo ($row['calculate'])一样显示它们;浏览器给出类似CCD_ 11的输出。我想让浏览器显示(20000)

我不知道我能做些什么来让浏览器像那样工作。有人知道如何解决那个问题吗?

如果你有一个包含PHP代码的字符串,你可以使用eval()来评估它。请注意,如果其他人最有可能影响该字符串中的数据,那么这是一个巨大的安全漏洞。

$str = '$width*$height';
$width = 10;
$height = 20;
$area = eval($str);

您至少有三种可能性:

  • 使用eval(),如@PeterBowers的回答:我不推荐
  • 替换变量,然后使用eval():更好,但仍不建议使用
  • 重新思考你的calculate专栏:如果给出的例子具有代表性,你可以使用一个相当小的计算库——你基本上可以做这样的事情

$functions=array(
  '($width*$height)' => function($w, $h) { return $w*$h; },
  '(($width+$height)*2)' => function($w, $h) { return ($w+$h)*2; },
  // ...
);

然后

$calc=$functions[$row['calculate']]($width, $height);

当然,你需要调整你的参数,检查功能是否存在等。接下来,您可以使用命名函数,并开始将函数的名称存储在calculate字段中,从而使工作真正正常。