mysql 行中存储了几个数学公式供个人使用。即一个字段包含这个公式作为字符串 (varchar): (($a+$b)/$c)
现在在 php 变量中由 foreach 循环动态填充:
$temp_array[$deviceData["devicename"]] = $deviceSum;
$deviceData["devicename"] 代表 $a, $b, $c。
该数组可能看起来像 $a=>20、$b=>30、$c=>580。
我如何在字符串公式中使用这个变量?
谢谢你的帮助。
不幸的是,您需要对其进行评估。
如果值是这样的:
$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"]);
要不就:
extract($deviceData["devicename"]);
echo eval('return '.$formula.';');
但是您正在使用提取的内容污染全局变量表,这可能会导致更多问题。
如果公式是由用户定义的,则不要使用 eval ,否则您将遇到安全问题。
在任何方面,我均不对任何损害承担任何责任,包括但不限于直接、间接、特殊或后果性损害,这些损害是由使用所提供的代码引起的,或以任何方式与之相关的,无论是否基于在保证、合同、侵权或其他方面;伤害是否是由人员或财产或其他方式造成的;以及是否因使用此代码而导致或产生损失。;p
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句