本節主要是應用前面幾節學習的內容來實現一個簡單的計算器,範例中使用 HTML 程式碼編寫一個使用者操作的計算器介面,然後使用 PHP 的流程控制判斷使用者操作的各種情況、計算使用者輸入的值,並動態輸出計算結果。
同時範例中還使用了全域性陣列 $_POST,用來從表單中獲取使用者輸入的資訊,這裏只需瞭解即可,後面我們會詳細介紹,具體程式碼如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>C語言中文網(PHP實現簡單的計算器)</title>
</head>
<body>
<?php
$msg = ''; // 用來儲存錯誤資訊
$num1 = !empty($_POST['num1']) ? $_POST['num1'] : ''; // 獲取第一個數
$num2 = !empty($_POST['num2']) ? $_POST['num2'] : ''; // 獲取第二個數
if(isset($_POST['sub'])) { // 判斷是否執行計算操作
if($num1 == ""){ // 當第一個數爲空時的錯誤資訊
$msg .= "第一個數不能爲空!<br>";
}else{ // 當第一個數不是數位的錯誤資訊
if(!is_numeric($num1)){
$msg .= "第一個數必須是數位!<br>";
}
}
if($num2 == ""){ // 當第二個數爲空時的錯誤資訊
$msg .= "第二個數不能爲空!<br>";
}else{
if(!is_numeric($num2)){ // 當第二個數不是數位時的錯誤資訊
$msg .= "第二個數必須是數位!<br>";
}else{
if($num2 == 0 && $_POST['operator'] =='/'){ // 除法運算時除數爲0時的錯誤資訊
$msg .= "除數不能爲 0!<br>";
}
}
}
}
?>
<table border="1" align="center">
<form action="" method="post">
<caption><h2>計算器</h2></caption>
<tr>
<td><input type="text" name="num1" value="<?php echo $num1?>"></td>
<td>
<select name="operator">
<option value="+" <?php echo !empty($_POST['operator'])&&$_POST['operator']=='+'?"selected":""?>>+</option>
<option value="-" <?php echo !empty($_POST['operator'])&&$_POST['operator']=='-'?"selected":""?>>-</option>
<option value="*" <?php echo !empty($_POST['operator'])&&$_POST['operator']=='*'?"selected":""?>>*</option>
<option value="/" <?php echo !empty($_POST['operator'])&&$_POST['operator']=='/'?"selected":""?>>/</option>
<option value="%" <?php echo !empty($_POST['operator'])&&$_POST['operator']=='%'?"selected":""?>>%</option>
</select>
</td>
<td><input type="text" name="num2" value="<?php echo $num2?>"></td>
<td><input type="submit" name="sub" value="計算"></td>
</tr>
</form>
<?php
if(isset($_POST['sub'])){ // 判斷是否執行了計算操作
echo '<tr><td colspan="4">';
if(!$msg){ // 沒有錯誤資訊時,執行下面 下麪的操作
$res = 0; // 用來儲存計算結果
switch ($_POST['operator']) { // 根據運算子執行相應的運算
case '+':
$res = $num1 + $num2;
break;
case '-':
$res = $num1 - $num2;
break;
case '*':
$res = $num1 * $num2;
break;
case '/':
$res = $num1 / $num2;
break;
case '%':
$res = $num1 % $num2;
break;
}
echo '結果:'.$num1.' '.$_POST['operator'].' '.$num2.' = '.$res; // 輸出運算結果
}else{
echo $msg; // 輸出錯誤資訊
}
echo '</td></tr>';
}
?>
</table>
</body>
</html>
執行結果如下圖所示: