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