【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); // 即为相应的值
解析逆波兰表达式的方法,编译原理中有,就是先把表达式分解成符号数组,然后求逆波兰式,最后根据逆波兰式得到其结果。