【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>
相關文章
相關標籤/搜索