`
bardo
  • 浏览: 378207 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D1407912-ab64-3e76-ae37-b31aa4afa398
浅述PHP设计模式
浏览量:11805
9d6df9f7-91da-3787-a37c-0e826525dd5d
Zend Framewor...
浏览量:10112
85b628bd-a2ed-3de2-a4b1-0d34985ae8b6
PHP的IDE(集成开发环...
浏览量:9499
社区版块
存档分类
最新评论

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

    博客分类:
  • 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

0
1
分享到:
评论

相关推荐

    PHP使用逆波兰式计算工资的方法

    总之,逆波兰式计算方法是一种高效且易于实现的计算策略,特别适合在编程语言如PHP中处理复杂的表达式计算,尤其是涉及到工资计算等实际业务场景时。通过将中序表达式转换为逆波兰表达式,我们可以简化计算逻辑,...

    支持浮点数的中辍表达式计算器----用逆波兰法

    这通常是一个栈,因为栈具有“后进先出”(LIFO)的特性,非常适合处理逆波兰表达式。当遇到数字时,将其压入栈;遇到运算符时,弹出栈顶的两个元素进行运算,然后将结果压回栈中。如果输入的表达式包含错误,如 "--...

    Reverse-Polish-Notation:逆波兰表示法 - 包括对数字、字符串和函数表达式的支持

    rpn - 反向波兰符号 PHP 类这个 PHP 类实现了一个逆波兰表示法 (RPN) 评估,它支持数字、字符串和用户定义的函数以及用于数字/字符串操作的内置 PHP 函数。 #####Live 示例和其他项目可以在我的 [development] ( ) ...

    用PHP实现的四则运算表达式计算实现代码

    在实际应用中,为了提高计算速度和减少代码复杂性,可以考虑使用逆波兰表示法转换算法,如Dijkstra的Shunting-yard算法,或者使用现有的PHP库,如PHPEval等,它们提供了更高效和安全的表达式计算功能。 总结起来,...

    逆波兰表达式实现的简易计算器

    2. **栈操作**:逆波兰表达式计算通常使用栈来存储中间结果。当遇到数字时,将其压入栈;遇到运算符时,弹出栈顶的两个操作数进行计算,并将结果压回栈。 3. **计算结果**:最后,栈中剩下的唯一元素就是表达式的...

    php四则运算计算函数

    代码中包含通过逆波兰式php实现的计算四则运算表达式的方法,比如计算(103*(12/321+7)+3)*45的结果,网上常用的四则运算函数或者不能支持多位运算,或者不能支持括号,或者只有逆波兰式的实现。

    PHP 计算器程序

    这种方法被称为逆波兰表示法(Reverse Polish Notation,RPN),在计算复杂表达式时非常有效。 对于错误处理,我们需要考虑到无效的输入,如除以零、未封闭的括号或无法识别的运算符。在这种情况下,PHP程序应该能...

    PHP实现基于栈的后缀表达式求值功能

    后缀表达式,又称逆波兰表示法,是一种不使用括号和优先级规则来表示数学表达式的方法。在后缀表达式中,运算符置于其操作数之后,使得计算过程更为直观和简单。这种表示方式在计算机科学中常用于简化表达式求值,...

    PHP实现的简单四则运算计算器功能示例

    在本示例中,我们探讨了如何使用PHP实现一个简单的四则运算计算器。这个计算器能够处理加法(+)、减法(-)、乘法(*)和除...尽管此示例不支持括号,但通过扩展,可以加入处理括号的功能,以支持更复杂的表达式计算。

    2021软件设计师知识点

    21. **后缀式求值**:利用栈来计算逆波兰表示的表达式。 22. **中间代码形式**:包括后缀式、三地址码和语法树,是编译过程中的中间表示。 23. **绑定时间**:动态绑定在运行时结合,静态绑定在编译时确定。 24. ...

    rpn:反向波兰语符号实现

    rpn 反向波兰语符号实现。例子var rpn = require ( 'rpn' ) ;rpn ( '3 4 +' ) ;// => 7安装$ npm install rpnAPI var rpn = require ( 'rpn' ) ;rpn(表达式) 计算后缀expression并返回结果。

    滴滴出行2016研发工程师笔试题及答案(二).pdf

    11. **表达式后缀表示**:后缀表达式是逆波兰表示法,XABCDEF+*/+=是给定表达式的后缀表示。 12. **跨域通信**:CORS(Cross-Origin Resource Sharing)是实现浏览器跨域请求的一种方式。 13. **多路复用I/O**:在...

    linux 命令英文全称

    dc(Desk Calculator)是一个逆波兰记号计算器(reverse Polish notation calculator)。 #### dd=DiskDump dd(Disk Dump)命令用于进行低级别的数据复制。 #### df=DiskFree df(Disk Free)命令用于显示磁盘空间使用...

    Linux术语全称文本下载

    48. **dc (Desk Calculator)**:一个交互式的逆波兰记法计算器。 49. **dd (Disk Dump)**:用于复制或转换文件。 50. **df (Disk Free)**:显示磁盘空间使用情况。 51. **diff (DIFFerence)**:比较文件之间的差异。...

    Linux命令全称,包括SQL等等

    39. **dc=DeskCalculator**:一个交互式逆波兰记号计算器。 40. **dd=DiskDump**:用于复制文件或备份整个磁盘分区。 41. **df=DiskFree**:显示文件系统的磁盘空间使用情况。 42. **diff=DIFFerence**:显示两个...

    liunx命令全称.md

    - 测试本地主机与远程主机之间的网络连通性。 #### 22. reboot (Restartyourcomputer) - **全称**: Restartyourcomputer - **功能**: 重启计算机。 - **应用场景**: - 当系统出现故障或更新后需要重启时。 #### ...

Global site tag (gtag.js) - Google Analytics