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

时间:2015-03-22 20:52:07

标签: php database

我有一个包含产品的数据库。列为:IDprodnamecalculatecalculate单元格包含($width*$height)(($width+$height)*2)($width*2)等内容。

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

我的问题是我无法用它们来计算。如果我从数据库中读取计算部分并将其显示为echo ($row['calculate']);浏览器提供类似$width*$height)的输出。我想让浏览器显示(20000)

我不知道如何让浏览器像这样工作。有人知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您至少有三种可能性:

  • 在@ PeterBowers'中使用eval()回答:我不推荐
  • 替换您的变量,然后使用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字段中存储函数的名称,从而使工作变得非常合理。