<html>
<!--php计算器,进行简单计算,本程序采用php多分支语句switch case为主导语法,当用户正确输入两个合法数字包括数字或者小数方可正确计算,用户数据采用post提交-->
<?php
$n1=$_POST['num1']; //动态获取表单中用户计算的数据和运算符号
$n2=$_POST['num2'];
$f=$_POST['ysf'];
//$result=$n1." "."$f"."$n2";
switch($f)
{ //对应的不同运算符号,将不同的两个数据进行相对应的运算,将不同运算符的运算赋值给一个新的变量result(新值)
case'+':
$result=$n1+$n2;
break;
case'-':
$result=$n1-$n2;
break;
case'*':
$result=$n1*$n2;
break;
case'/':
$result=$n1/$n2;
break;
case'%':
$result=$n1%$n2;
break;
}
?>
<head>
<title>php计算器采用SWITCH多分支</title>
</head>
<body bgcolor="yellow">
<h1 align="center" style="font-size:50px;color:pink;">php计算器升级V1.1</h1>
<form action="" method="post" align="center"><!--提交到本页面,无需写action的值-->
请输入第一个数值:<input type="text"name="num1" style="background:purple;color:blue;font-size:20px;border:0" value="<?php echo isset($n1)?$n1:"";?>">
<br>
请选择需要计算的符号:<select name="ysf" style="margin:10px;font-size:20px;background-color:rgba(0,205,80,0.7)">
<!--php代码可以写入在任何一个部位,需求当用户选择某个运算符时,固定该运算符,下拉默认是selected,用php动态输出即完成该需求-->
<option value="+" <?php if($f=='+') {echo 'selected';}?> >+</option>
<option value="-" <?php if($f=='-') {echo 'selected';}?> >-</option>
<option value="*" <?php if($f=='*') {echo 'selected';}?> >*</option>
<option value="/" <?php if($f=='/') {echo 'selected';}?> >/</option>
<option value="%" <?php if($f=='%') {echo 'selected';}?> >%</option>
</select>
<br>
<!--在input内加入value,value值用动态输出,用户是否写入了计算数据,写入了直接输出改数字,用三目运算符进行判断,存在直接输出到对应的ipnut框-->
请输入第二个数值:<input type="text" name="num2"style="background:pink;color:grey;font-size:20px;border:0" value="<?php echo isset($n2)?$n2:"";?>">
<br>
<input type="submit" value="计算" align="center" style=" margin:10px;background:black;border:0;font-size:20px;color:white"> <input type="reset" value="清除" align="center" style=" margin:10px;background:black;border:0;font-size:20px;color:white">
<br>
<textarea name="" id="" cols="60" style="background:black;color:white;font-size:30px">
<?php
/*if($n1!=false &&$n1!=false){
echo isset($result)?"运算结果:{$n1}{$f}{$n2}={$result}":"";
}
else if($n1==false){
echo "Error:请输入第一个数,第一个数是否为空";
}
else if($n2=="")
{
echo "Error:请输入第二个数,请确认第二个数是否为空";
}
else if($n1==false&&$n2=false)
{
echo "Error:请输入两个操作数进行计算,请检查第一个和第二个数是否为空";
}*/
//上述注释掉的代码,测试结果为第一个为空提示错误,第一个有数字具体的值不会提示第二个数值错误,抛弃
//is_numeric($var)判断一个变量是否为数字或者数字字符串,符合正常运算需求,采用is_numeric函数判断,符合的输出,不符合报错,采用if else if多分支
if(is_numeric($n1)&& is_numeric($n2))
{
echo isset($result)?"运算结果:{$n1}{$f}{$n2}={$result}":"";
}
else if(is_numeric($n2))
{
echo "Error:请输入第一个数,第一个数是否为空";
}
else if(is_numeric($n1))
{
echo "Error:请输入第二个数,第二个数是否为空";
}
/*else if(is_numeric($n2))
{
echo "Error:请输入第一个数,第一个数是否为空";
}*/
?>
</textarea>>
</form>
</body>
</html>