php函数编程计算器,PHP实现的简单四则运算计算器功能示例

本文实例讲述了PHP实现的简单四则运算计算器功能 。分享给大家供大家参考 , 具体如下:
php实现一个简单的四则运算计算器(还不支持括号的优先级) 。利用栈这种数据结构来计算表达式很赞 。
这里可以使用栈的结构 , 由于php的数组“天然”就有栈的特性 , 这里直接就利用了数组 。当然可以使用栈结构写 , 道理一样的 。
前辈(波兰一位科学家)在计算带有括号的四则表达式 , 利用逆波兰算法(后缀表达法) 。简直神了!!其实代码code并不难 , 难的是算法的指导 , 要先理解算法 , 才能编码 。
$ = array();// 声明数字栈
$ = array();// 声明符号栈
$str = "10+6*2-18/2-2";
('/./', $str, $arr);// 把运算串分解成每个字符到$arr数组
$ = $arr[0];
$ = count($);
$ = '';
// 开始入栈
for($i=0; $i
$val = $[$i];
// 数字
if (($val)){
$ .= $val;// 兼顾下一个字符可能也是数字的情况(多位数)
if($i+1>=$ || ($[$i+1])){// 下一个是运算符或者到头了 , 则把数字塞进数字栈
($, $);
$ = '';
// 符号判断优先级 , 选择是否入栈
} else if (($val)){
if (count($)>0){
// 判断优先级 , 只要不大于符号栈顶的优先级 , 就开始计算 , 直到优先级大于了栈顶的 , 计算后才再把这个运算符入栈
while (end($) && ($val) 0){
calc($, $);
if (count($)==1){
$ = ($);
break;
echo $str,' = ', $;
// 计算 , 获取数字栈的两个数 , 符号栈顶的运算符
calc(&$, &$){
if (count($)>0){
$num1 = ($);
$num2 = ($);
$op = ($);
if ($op=='*') $re = $num1*$num2;
if ($op=='/') $re = $num2/$num1;// 这里注意顺序 , 栈是先进后出 , 所以$num2是被除数
if ($op=='+') $re = $num2+$num1;
if ($op=='-') $re = $num2-$num1;
($, $re);
// 获取优先级
($str){
if ($str == '*' || $str == '/'){
1;
} else {
0;
// 判断是否是运算符
($oper){
$ = array('+','-','*','/');
if (($oper, $)){
true;
false;
运行结果:
10+6*2-18/2-2 = 11
PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:
在线一元函数(方程)求解计算工具:
科学计算器在线使用_高级计算器在线计算:
在线计算器_标准计算器:
【php函数编程计算器,PHP实现的简单四则运算计算器功能示例】希望本文所述对大家PHP程序设计有所帮助 。