猿问
下载APP

如何对像“2-1”这样的字符串进行数学计算以生成“1”?

如何对像“2-1”这样的字符串进行数学计算以生成“1”?

我只是想知道PHP是否有一个可以接受字符串的函数2-1并给出了计算结果。

或者我需要手动完成这个操作吗?explode()以得到算术运算符的左、右值?


至尊宝的传说
浏览 343回答 3
3回答

茅侃侃

我知道这个问题很古老,但昨晚我在寻找一些不太相关的东西时发现了这个问题,这里的每一个答案都是糟糕的。不仅仅是坏事,非常坏的。我在这里给出的例子将来自我在2005年创建的一个类,由于这个问题,我在过去几个小时里对PHP 5进行了更新。其他的系统确实存在,并且在这个问题发布之前就已经存在了,所以我很困惑为什么这里的每个答案都告诉你要使用。eval,当PHP的警告是:val()语言结构非常危险,因为它允许执行任意PHP代码。因此,不鼓励使用它。如果您已经仔细验证了除了使用此构造之外没有其他选项,请特别注意,在未对其进行适当验证之前,不要将任何用户提供的数据传递到该结构中。在进入示例之前,获取我将要使用的类的位置聚氯硅烷或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年。^^Wolfram\Alpha API圣贤一个相当糟糕的解析器phpdicecalc不太清楚我之前在GitHub上发现的其他人发生了什么,不幸的是,我没有对它做书签,但它与包含解析器的大型浮点操作有关。不管怎样,我想确定的是,在这里用PHP解决方程的答案不是指向所有未来的搜索者eval因为这是谷歌搜索的顶端。^^

慕田峪7331174

$operation='2-1';eval("\$value = \"$operation\";");或$value=eval("return ($op);");

海绵宝宝撒

这是其中一个案例埃瓦尔派上用场:$expression = '2 - 1';eval( '$result = (' . $expression . ');' );echo $result;
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答