如何用数学方式计算像“2-1”这样的字符串来产生“1”?
我只是想知道PHP是否有一个函数可以像字符串一样获取并产生它的算术结果?2-1
还是我必须手动执行此操作才能获得算术运算符左右的值?explode()
我只是想知道PHP是否有一个函数可以像字符串一样获取并产生它的算术结果?2-1
还是我必须手动执行此操作才能获得算术运算符左右的值?explode()
我知道这个问题很老了,但我昨晚在寻找一些不太相关的东西时遇到了它,这里的每一个答案都很糟糕。不只是坏,非常糟糕。我在这里给出的例子将来自我在2005年创建的一个类,由于这个问题,在过去的几个小时里为PHP5进行了更新。其他系统确实存在,并且在这个问题发布之前就已经存在了,所以这让我感到困惑,为什么这里的每个答案都告诉你使用eval
,而PHP的警告是:
eval() 语言构造非常危险,因为它允许执行任意 PHP 代码。因此,不鼓励使用它。如果您已仔细验证除了使用此构造之外没有其他选择,请特别注意不要在未事先正确验证的情况下将任何用户提供的数据传递到其中。
在我进入这个示例之前,获取我将要使用的类的地方是在PHPClasses或GitHub上。和 都是必需的,但可以合并到同一个文件中。eos.class.php
stack.class.php
使用此类的原因是它包含后缀 (RPN) 解析器并对其进行了后缀,然后是 RPN 求解器。有了这些,您就不必使用该功能并将系统打开到漏洞。获得类后,只需以下代码即可解决简单(到更复杂)方程(如您的示例)eval
2-1
require_once "eos.class.php";
$equation = "2-1";
$eq = new eqEOS();
$result = $eq->solveIF($equation);
就是这样!对于大多数方程,您可以使用这样的解析器,无论多么复杂和嵌套,而不必诉诸“邪恶”。eval
因为我真的不希望这只让我的班级在其中,所以这里有一些其他选择。我只是熟悉我自己的,因为我已经使用它8年了。^^
沃尔夫勒姆|Alpha API
Sage
一个相当糟糕的解析器
phpdicecalc
不太确定我以前发现的其他人发生了什么 - 之前在GitHub上也遇到过另一个,不幸的是我没有为它添加书签,但它与包含解析器的大型浮点运算有关。
无论如何,我想确保在这里解决PHP方程的答案不会指向所有未来的搜索者,因为这是谷歌搜索的顶部。^^eval
$operation='2-1';
eval("\$value = \"$operation\";");
或
$value=eval("return ($operation);");