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

用户3882511

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

https://3v4l.org/I2rbk

要不就:

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

但是您正在使用提取的内容污染全局变量表,这可能会导致更多问题。

如果公式是由用户定义的,则不要使用 eval ,否则您将遇到安全问题。


在任何方面,我均不对任何损害承担任何责任,包括但不限于直接、间接、特殊或后果性损害,这些损害是由使用所提供的代码引起的,或以任何方式与之相关的,无论是否基于在保证、合同、侵权或其他方面;伤害是否是由人员或财产或其他方式造成的;以及是否因使用此代码而导致或产生损失。;p

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在接口中使用字符串枚举类型作为计算的属性名称?

如何从字符串到整数计算公式

使用字符串函数编辑数学公式

如何在 TypeScript 中使用字符串作为数组的键

如何在Golang中使用字符串作为rand.Seed()函数的输入?

在React中如何在setState调用中使用字符串作为键

如何在熊猫数据框中使用字符串作为列名

如何在Typescript中使用字符串变量值作为对象中的键名

如何在函数中使用字符串作为变量名?

如何在json数据中使用字符串作为选择器?

如何在图表中使用字符串值作为X轴而不是双精度?

如何在FluentProvider for Vapor中使用字符串化的UUID作为主键-Swift

如何在dplyr中使用字符串变量作为过滤条件

如何在 Bigquery 中使用字符串作为列名

如何在 JAVA 中使用字符串变量作为对象名称?

我如何在 switch case 中使用字符串作为动作?

如何在 for 循环中使用字符串值作为列选择器

从字符串到结果的计算公式

使用字符串作为ipwtm函数的公式?

如何在数组中使用字符串?

如何在bash中使用字符串数组

如何在Go中使用字符串文字

如何在多个线程中使用字符串

如何在RcppEigen中使用字符串变量

如何在Swift中使用字符串获取

如何在python中使用字符串作为数组的名称,以便可以在for循环中使用

PHP:如何在文件输出中使用字符串生成索引名称?

如何在 PHP 中的数组树中使用字符串?

如何在 Dart/Flutter 中使用排名制定计算公式?