<?php
/**
* version:1.0
* author:于燚
* 2012年3月23日21:21:30
* 函数功能:计算任意加减乘除数学表达式的结果
* eg:echo jisuan("2/5-9+8*3/4");//输出结果2.6
* 更多功能正努力中......
*
* */
function jisuan($str){
$pat1="/\+/";
$pat2="/-/";
$pat3="/\*/";
$pat4="/\//";
$sum=0;
if(preg_match($pat1,$str)){
$arr=explode("+",$str);
foreach($arr as $val){
$pat="/[\/\*\+-]/";
if(preg_match($pat,$val)){
$val=jisuan($val);
}
$sum+=$val;
}
}else if(preg_match($pat2,$str)){
$arr=explode("-",$str);
foreach($arr as $key => $val){
$pat="/[\/\*]/";
if(preg_match($pat,$val)){
$val=jisuan($val);
}
if($key==0){
$sum=$val;
}else{
$sum-=$val;
}
}
}else if(preg_match($pat3,$str)){
$arr=explode("*",$str);
foreach($arr as $key => $val){
$pat="/[\/]/";
if(preg_match($pat,$val)){
$val=jisuan($val);
}
if($key==0){
$sum=$val;
}else{
$sum*=$val;
}
}
}else{
$arr=explode("/",$str);
foreach($arr as $key => $val){
if($key==0){
$sum=$val;
}else{
if($val==0){
header("Content-Type:text/html;charset=utf-8");
exit("表达式不合法!!!");
}
$sum/=$val;
}
}
}
return $sum;
}
echo jisuan("2/5-9+8*3/4");
?>
一个递归计算数学表达式的函数
最新推荐文章于 2022-08-04 06:30:00 发布
本文介绍了一个使用PHP实现的函数,该函数可以计算任意包含加、减、乘、除运算的数学表达式的结果。通过正则表达式匹配不同的运算符,并递归调用自身来处理复杂的表达式。
255

被折叠的 条评论
为什么被折叠?



