【PHP实战 两种计算器实现代码】

<!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:

  1. 输入字母也能够算,办法is_numeric

  2. 当任意操做数输入为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>
相关文章
相关标签/搜索