<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <?php $sum=""; $num1=isset($_POST['num1']) ? $_POST['num1'] : ""; //三元运算符 $num2=isset($_POST['num2']) ? $_POST['num2'] : ""; if(is_numeric($num1) && is_numeric($num2)){ if(isset($_POST['div'])){ if($num2 ===0){ echo "除数不能为0"; }else{ $sum=$num1/$num2; } } if(isset($_POST['add'])){ $sum=$num1+$num2; } if(isset($_POST['sub'])){ $sum=$num1-$num2; } if(isset($_POST['mul'])){ $sum=$num1*$num2; } }else{ echo "请输入有效数值"; } ?> <form method="post" action=""> 计算器 数值1:<input type="text" name="num1" value="<?php echo $num1;?>"> 数值2:<input type="text" name="num2" value="<?php echo $num2;?>"> <input type="submit" name="add" value="+"> <input type="submit" name="sub" value="-"> <input type="submit" name="mul" value="*"> <input type="submit" name="div" value="/"> 结果:<input type="text" name="sum" value="<?php echo $sum;?>"> </form> </body> </html>
代码解析
php
一、三元运算符
html
$num1=isset($_POST['num1']) ? $_POST['num1'] : "";
语法:条件 ? 结果1 : 结果2。| condition ? do_if_true : do_if_false;函数
isset ()函数检测变量是否存在,若存在则返回值,不存在返回空。post
三元运算符不是一种必不可少的结构,但倒是一种美化代码的途径。一样,它能够取代很差的if…else代码块,而且能够提升代码的可读性。ui
一样,用户可使用PHP的or运算服赋予变量默认值:spa
代码以下 调试
<?php $filename = $argv[1] or $filename = "php://stdin"; ?>
第二种code
上面那段代码是把+ - × /以按钮的形式展现出来,还有程序是作成<option>下拉菜单的形式:
orm
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf8"> <title>一个简单的计算器</title> </head> <body> <?php //若是用户单击了计算按钮才存在表单变量,才能接收表单数据和对数据进行验证 //如下if语句判断是否将表单中的两个操做数提交到本页面,若是没有则不执行 if(isset($_POST["num1"]) && isset($_POST["num2"])){ if(empty($_POST["num1"])){ //若是第一个第一个操做数为空输出错误信息,并中止计算 echo "<font color='red'>第一个操做数不能为空</font>"; unset($_POST["sub"]); //取消表单中的提交变量,后面计算判断时将不执行 } if(empty($_POST["num2"])){ //若是第二个第一个操做数为空输出错误信息,并中止计算 echo "<font color='red'>第二个操做数不能为空</font>"; unset($_POST["sub"]); //取消表单中的提交变量,后面计算判断时将不执行 } $oper=$_POST["oper"]; //获取操做符号 $num1=$_POST["num1"]; //获取第一个操做数 $num2=$_POST["num2"]; //获取第二个操做数 if($oper == "/"){ if($num2 == 0){ echo "<font color='red'>0不能做为除数使用</font>"; unset($_POST["sub"]); } } } ?> <!--以HTML表格的形式输出计算器的用户操做界面--> <table border="1" align="center" width="400"> <form action="" method="post"> <!--使用POST方法提交给本页面--> <caption><h2>简单的计算器</h2></caption> <tr> <td><input type="text" size="10" name="num1" value="<?php if(!empty($num1)){echo $num1;}?>"></td> <td> <select name="oper"> <option value="+" <?php if($oper == "+"){echo "selected";}?>>+</option> <option value="-" <?php if($oper == "-"){echo "selected";}?>>-</option> <option value="*" <?php if($oper == "*"){echo "selected";}?>>*</option> <option value="/" <?php if($oper == "/"){echo "selected";}?>>/</option> </select> </td> <td><input type="text" size="10" name="num2" value="<?php if(!empty($num2)){echo $num2;}?>"></td> <td><input type="submit" name="sub" value="计算"></td> </tr> <?php /**经过表单传过来的$_POST["sub],判断是否单击了计算按钮 来决定如下计算是否执行以及是否输出计算结果**/ if(isset($_POST["sub"]) && !empty($_POST["sub"])){ $sum = 0; //声明一个存放计算结果的变量,初始值为0 echo $sum; //使用switch语句,经过表单选择的操做符来决定执行哪一种运算 switch($oper){ case "+": $sum = $num1+$num2; break; case "-": $sum = $num1-$num2; break; case "*": $sum = $num1*$num2; break; case "/": $sum = $num1/$num2; break; } //如下的三行是在表格的新行中输出计算结果 echo "<tr><td colspan='4' align='center'>"; echo "计算结果:$num1 $oper $num2 = $sum"; echo "</td></tr>"; } ?> </form> </table> </body> </html>
这段代码也有报错,就是未定义变量,得把htm
$oper=$_POST["oper"];
改成
$oper=isset($_POST["oper"]) ? $_POST["oper"] : "";
话说回来这边的界面要精致些呢
目前看存在的bug:
输入字母也能够算,办法is_numeric
当任意操做数输入为0时,提示的是操做数不能为空
主要参照第二种方法本身试了试,各类bug。
调试了半天,感受,嗯,逻辑很重要吧orz
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset = utf-8"> <title>简单的计算器</title> </head> <body> <?php $oper = isset($_POST['oper']) ? $_POST['oper'] : ""; $num1 = isset($_POST['num1']) ? $_POST['num1'] : ""; $num2 = isset($_POST['num2']) ? $_POST['num2'] : ""; if(isset($_POST["num1"]) && isset($_POST["num2"])){ if(is_numeric($_POST['num1']) && is_numeric($_POST['num2'])){ if ($oper == '÷' && $num2 == 0){ echo "<font color = 'red'>除数不能为零</font>"; unset($_POST['sub']); } }else{ echo "<font color = 'red'>请输入有效数值</font>"; unset($_POST['sub']); } } ?> <table border="2" align="center" width="400" bgcolor="#E0E0E0" cellpadding="5"> <caption><b>简单计算器</b></caption> <form name="msg" method="POST" action=""> <tr> <td><input type="text" name="num1" value="<?php if (!empty($_POST['num1'])) { echo $num1; }?>"></td> <td> <select name="oper"> <option value="+" >+</option> <option value="-" >-</option> <option value="×" >×</option> <option value="÷" >÷</option> </select> </td> <td><input type="text" name="num2" value="<?php if (!empty($_POST['num2'])) { echo "$num2"; }?>"></td> <td> <input name="sub" type="submit" value="="> </td> </tr> <?php if(isset($_POST['sub']) && !empty($_POST['sub'])) { $sum = 0; switch($oper){ case "+": $sum = $num1 + $num2; break; case "-": $sum = $num1 - $num2; break; case "×": $sum = $num1 * $num2; break; case "÷": $sum = $num1 / $num2; break; } echo "<tr><td colspan='4' align='center'>"."计算结果:$num1 $oper $num2 = $sum". "</td></tr>"; }?> </form> </table> </body> </html>