Heim  >  Artikel  >  Backend-Entwicklung  >  PHP逆波兰示意与表达式计算

PHP逆波兰示意与表达式计算

WBOY
WBOYOriginal
2016-06-13 13:03:031074Durchsuche

PHP逆波兰表示与表达式计算

????? 说起表达式计算,想起一个笑话。我向他介绍,我们的PHP开发框架中有使用RPN对公式解析计算的类。于是,他笑我无知了。并且,还列出一系列的佐证,证明,在PHP中直接用EVAL函数就能解决一切问题。

???? 也许,你会同意这位老兄的看法。不要紧。你可以看一下PEER函数库。PEER函数库中,也有一个RPN的类。如果你现在还认为我错了,那么,开发PEER的RPN的人,一定是吃饱了撑着了,要不就是脑子短路了。

???? 其实,事实根本不是这样。举一个最简单的例子,你本月工资的计算表达式是:21*B-C*V,其中,B是你的基本工资,C是你的假期扣薪,V是你请假的天数。我们己知:$B=200, $C=120, $V=3。

???? 那么,你用EVAL计算给我看看?也许你说,JS就好了,因为,JS变量中无$。问题就出在这里。

???? 解决方案不外乎是两种,一种是给表达式中的变量加上$号。另一种,则是写一个表达式解析引擎。

??? 表达式的计算,有关于运算符的优先级问题,一般使用逆波兰表示法解析,也就是英文简称的RPN。我们了解,正常的数学表达式是用中缀表示法。

??? 可惜的是,PEER的RPN类太简陋了。无法扩展。所以,才写了一个可以扩展的类。

??? 如果你有兴趣,可以下载看看:

??? http://www.phpclasses.org/package/5584-PHP-Evaluate-expressions-in-Reverse-Polish-Notation.html

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn