<!--2018-08-08 分支语句 实现简单计算器 -->
<html>
<head>
<title>PHP实现计算器(使用分支结构)</title>
</head>
<body>
<?php
$mess="";
if(isset($_POST['sub']))
{
if($_POST['num1']=="")
{
$mess = "第一个数不能为空;<br>";
}else{
if(!is_numeric($_POST['num1']))
{
$mess = "第一个数必须是数字;<br>";
}
}
if($_POST['num2']=="")
{
$mess = "第二个数字不能为空;<br>";
}else{
if(!is_numeric($_POST['num2']))
{
$mess = "第二个数必须为数字;<br>";
}else{
if($_POST['opt'] == '/' &&$_POST['num2']==0)
{
$mess = "除数不能为0;";
}
}
}
}
?>
<table border="1" align="center" width="400">
<form method="post">
<caption><h1>计算器</h1></caption>
<tr>
<td>
<!--解释一下为何$_POST['num1']前面要加@ ;
因为此处为post传参,没有重新创建传参页面,所以在开始运行时,$POST没有创建,不存在,所以会报错
只有经过一次post之后,页面才会显示正常,所以为了避免第一次错误显示,在此可能出错语句前面加了错误控制运算符@;
下面几个同理;
解析:<option value="+" <?php echo @$_POST['opt']=="+" ? "selected":""?>>+</option>
$_POST['opt']=="+" ? "selected":"" 这是个三元式,如果post传输值为'+' 则输出selected,否则输出空;
selected属性为option 属性,就是当选择值有多个时,加入selected的值优先展示在屏幕;
就是为了记忆上次运算
-->
<input type="text" name="num1" value="<?php echo @$_POST['num1']; ?>"/>
</td>
<td>
<select name="opt">
<option value="+" <?php echo @$_POST['opt']=="+" ? "selected":""?>>+</option>
<option value="-" <?php echo @$_POST['opt']=="-" ? "selected":""?>>-</option>
<option value="*" <?php echo @$_POST['opt']=="*" ? "selected":""?>>*</option>
<option value="/" <?php echo @$_POST['opt']=="/" ? "selected":""?>>/</option>
<option value="%" <?php echo @$_POST['opt']=="%" ? "selected":""?>>%</option>
</select>
</td>
<td>
<input type="text" name="num2" value="<?php echo @$_POST['num2']; ?>" /> <br>
</td>
<td>
<input type="submit" name="sub" value="计算"/>
</td>
</tr>
</form>
<?php
if(isset($_POST['sub']))
{
echo '<tr><td colspan="4">';
if(!$mess){
$sum=0;
switch($_POST['opt'])
{
case "+":$sum=$_POST['num1']+$_POST['num2']; break;
case "-":$sum=$_POST['num1']-$_POST['num2']; break;
case "*":$sum=$_POST['num1']*$_POST['num2']; break;
case "/":$sum=$_POST['num1']/$_POST['num2']; break;
case "%":$sum=$_POST['num1']%$_POST['num2']; break;
}
echo "结果:{$_POST['num1']} {$_POST['opt']} {$_POST['num2']} = {$sum}";
}
else{
echo $mess;
}
echo '</td></tr>';
}
?>
</table>
</body>
</html>
如有问题,请多指教!!qq:1905772768