在php中如何使用字符串作为数学计算公式?

rxztt3cl  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(497)

mysql行中存储了几个数学公式供个人使用。i、 一个字段包含一个字符串形式的公式(varchar):($a+$b)/$c)
现在在php中,变量由foreach循环动态填充:

$temp_array[$deviceData["devicename"]] = $deviceSum;

$devicedata[“devicename”]表示$a、$b、$c。
数组可以看起来像$a=>20,$b=>30,$c=>580。
如何将此变量与字符串公式一起使用?
谢谢你的帮助。

lhcgjxsq

lhcgjxsq1#

不幸的是,你需要评估一下。
如果值如下:

$deviceData["devicename"] = [
    'a' => 20,
    'b' => 30,
    'c' => 580
];

你可能需要把他们隔离开来 extract() 如果有超过3个等,封装在函数/闭包中就可以了。

<?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"]);

https://3v4l.org/i2rbk
或者只是:

extract($deviceData["devicename"]); 
echo eval('return '.$formula.';');

但是您正在用提取的内容污染全局变量表,可能会导致更多问题。
尽管如果公式是由用户定义的,不要使用eval,否则您将有安全问题。
在任何方面,我都不对任何损害承担任何责任,包括但不限于因使用所提供的代码而产生、导致或以任何方式与之相关的直接、间接、特殊或后果性损害,无论是否基于保证、合同、侵权或其他原因;是否有人身、财产或其他原因造成伤害;以及是否因本规范的使用而遭受损失;p

相关问题