我有一个包含产品的数据库。列为:ID
,prodname
,calculate
。 calculate
单元格包含($width*$height)
,(($width+$height)*2)
,($width*2)
等内容。
我的PHP脚本包含相同的变量,其值为$width = 100
,$height = 200
。
我的问题是我无法用它们来计算。如果我从数据库中读取计算部分并将其显示为echo ($row['calculate'])
;浏览器提供类似$width*$height)
的输出。我想让浏览器显示(20000)
。
我不知道如何让浏览器像这样工作。有人知道如何解决这个问题吗?
答案 0 :(得分:0)
如果您有包含PHP代码的字符串,则可以使用eval()
对其进行评估。请注意,如果其他人可能影响该字符串中的数据的可能性最小,那么这是一个巨大的,巨大的安全漏洞。
$str = '$width*$height';
$width = 10;
$height = 20;
$area = eval($str);
答案 1 :(得分:0)
您至少有三种可能性:
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
字段中存储函数的名称,从而使工作变得非常合理。