PHP逆波蘭示意與運算式計算

來源:互聯網
上載者:User
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

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.