Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1561482
  • 博文数量: 1481
  • 博客积分: 26784
  • 博客等级: 上将
  • 技术积分: 17045
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-12 09:22
文章分类

全部博文(1481)

文章存档

2014年(10)

2013年(353)

2012年(700)

2011年(418)

分类: 系统运维

2012-03-26 14:42:12

/**
* 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");

?>

原文地址:

阅读(296) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~