在函数php中添加数学运算符[重复]

Posted

技术标签:

【中文标题】在函数php中添加数学运算符[重复]【英文标题】:add math operators in function php [duplicate] 【发布时间】:2013-10-21 10:51:02 【问题描述】:

我对此有点陌生,但我想知道是否可以将一些动态计算作为参数添加到函数中。

事情在我的函数内部,我以一致的方式格式化东西,但每次我想在参数中添加某种不同的计算。

<?php
function dynamicCalculator($calculation)

 $result = $calculation;

 //some formatting
 return $result;


 echo dynamicCalculator('(3x5)+1');

这当然行不通,但如果有人知道它是如何工作的,我很想听听。

【问题讨论】:

***.com/questions/1015242/… how to make a calculator in php 【参考方案1】:

您正在寻找的是 eval 函数。

eval('$result = (3*5)+1');

但请注意确保您没有将可能有害的代码传递给该函数。

【讨论】:

非常感谢,我不知道这个 eval 函数,但它确实听起来很“邪恶”:) 干杯!【参考方案2】:

您正在寻找 RPN(反向波兰表示法)

这是一个例子

http://pear.php.net/package/Math_RPN/

这将允许您使用

$expression = "(2^3)+sin(30)-(!4)+(3/4)";

$rpn = new Math_Rpn(); echo $rpn->calculate($expression,'deg',false);

而且不必使用 Eval

【讨论】:

建议图书馆不是答案。请包含有效代码,否则请删除并作为评论发布。 更新了代码示例 非常感谢。我会看看这个库【参考方案3】:

使用evaleval("10+2") 应该返回 12。不过请注意,您也可以使用 eval 运行 PHP 代码。

别人有一个similar question on ***。

【讨论】:

【参考方案4】:

你可以用这个:

function dynamicCalculator($calculation) 
   $result = eval($calculation);
   return $result;

【讨论】:

注意:在文档 php.net/manual/en/function.eval.php 中提到这是危险的,因为各种 PHP 代码都可能被偷运到 $calculation

以上是关于在函数php中添加数学运算符[重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP高精度数学运算函数

php重载=运算符[重复]

PHP(运算符,语句,函数)

PHP 运算符

带有数学运算符的字符串到整数 [重复]

PHP中MySQL DECIMAL数据类型的数学运算