技术开发 频道

PHP逆波兰表达式的算法-工资计算专用

    【IT168 技术文档】有个网友写信给我谈到关于PHP计算工资问题。我以前一篇文章中谈到过一种计算工资的方法,不过是偷巧,利用现有的表达式的工具,现在既然有人想要,我就给出一个逆波兰的算法。

    我们的目标是实现如下的计算公式:

    假设有一个计算公式如下:

    $expression = "(F1*F12+10.34)";

    其中的变量值如下:

    $expression_value = Array('F1'=>10,'F12'=>20);

    我们希望用PHP构建一个类来计算出这个表达式的值。这种应用主要用于web工资管理中,用户可以自定义其工资相公式的情况

    $rpn = new Math_Rpn();
    $rpn->setExpressionValue($expression_value); 
    echo $rpn->calculate($expression,'deg',false); // 即为相应的值

    解析逆波兰表达式的方法,编译原理中有,就是先把表达式分解成符号数组,然后求逆波兰式,最后根据逆波兰式得到其结果。

 

0
相关文章