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