PHP是一種開源的服務器端編程語言,它具有廣泛的應用,其中包括創建計算器應用程序。計算器應用程序是簡單但常見的應用程序,可以用於學生、商業人士和科學家等多種場景。PHP計算器是使用PHP語言和HTML(超文本標記語言)構建的應用程序。本文將從多個方面對PHP計算器進行詳細的闡述。
一、計算器的基本結構
一個簡單的計算器通常由輸入框、按鈕和輸出框構成。
<form method="post" action="calculator.php">
<input type="text" name="num1">
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" name="num2">
<input type="submit" name="submit" value="Calculate">
</form>
<?php
if(isset($_POST['submit'])){
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$operator = $_POST['operator'];
switch($operator){
case "add":
$result = $num1 + $num2;
break;
case "subtract":
$result = $num1 - $num2;
break;
case "multiply":
$result = $num1 * $num2;
break;
case "divide":
$result = $num1 / $num2;
break;
}
echo "Result: " . $result;
}
?>
該示例展示了一個基本的計算器結構,由兩個輸入框和一個下拉框構成,用於選擇操作符(加、減、乘、除),以及一個計算按鈕和一個輸出框,用於顯示計算結果。
二、表單驗證
在用戶提交時,需要驗證輸入是否符合要求,否則會導致程序錯誤。以下是一個示例:
<form method="post" action="calculator.php">
<input type="text" name="num1">
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" name="num2">
<input type="submit" name="submit" value="Calculate">
</form>
<?php
if(isset($_POST['submit'])){
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$operator = $_POST['operator'];
if(empty($num1) || empty($num2)){
echo "Please enter both numbers.";
exit;
}
if(!is_numeric($num1) || !is_numeric($num2)){
echo "Please enter valid numbers.";
exit;
}
switch($operator){
case "add":
$result = $num1 + $num2;
break;
case "subtract":
$result = $num1 - $num2;
break;
case "multiply":
$result = $num1 * $num2;
break;
case "divide":
if($num2 == 0){
echo "Cannot divide by zero.";
exit;
}
$result = $num1 / $num2;
break;
}
echo "Result: " . $result;
}
?>
該示例增加了對輸入值的驗證,以確保輸入的值不為空,且為數字。如果輸入值為空或不合法,則會顯示錯誤信息。此外,在除法計算時,還需要避免除以0的情況。
三、改進計算器
除了基本的計算器功能之外,還可以添加其他功能,使其更為實用。以下是一些常見的改進功能:
1. 按鈕樣式
更改按鈕樣式可以提高用戶體驗並使計算器更具吸引力,以下示例使用CSS為按鈕添加樣式:
<style>
button{
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
border-radius: 4px;
}
button:hover {
background-color: #45a049;
}
</style>
<form method="post" action="calculator.php">
<input type="text" name="num1">
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" name="num2">
<button type="submit" name="submit">Calculate</button>
</form>
2. 實時計算
添加JavaScript代碼可以實現實時計算。以下示例每當用戶輸入或更改值時,即會調用JavaScript函數進行計算並顯示結果:
<form method="post" action="calculator.php">
<input type="text" name="num1" oninput="calculate()">
<select name="operator" onchange="calculate()">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" name="num2" oninput="calculate()">
<input type="text" name="result" readonly>
<input type="hidden" name="submit">
</form>
<script>
function calculate(){
var num1 = parseFloat(document.getElementsByName("num1")[0].value);
var num2 = parseFloat(document.getElementsByName("num2")[0].value);
var operator = document.getElementsByName("operator")[0].value;
switch(operator){
case "add":
result = num1 + num2;
break;
case "subtract":
result = num1 - num2;
break;
case "multiply":
result = num1 * num2;
break;
case "divide":
result = num1 / num2;
break;
}
document.getElementsByName("result")[0].value = result.toFixed(2);
}
</script>
該示例使用JavaScript編寫了一個calculate()函數,用於獲取輸入框中的值並在結果框中顯示計算結果。在輸入框中添加oninput屬性和下拉框中添加onchange屬性,以確保每次用戶更改輸入時都會調用該函數。
3. 歷史記錄
使用PHP會話存儲功能,可將計算歷史記錄存儲在服務器上。以下是一個示例,可以記錄最近十個計算記錄:
<?php
session_start();
if(isset($_POST['submit'])){
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$operator = $_POST['operator'];
if(empty($num1) || empty($num2)){
$error = "Please enter both numbers.";
}
else if(!is_numeric($num1) || !is_numeric($num2)){
$error = "Please enter valid numbers.";
}
else{
switch($operator){
case "add":
$result = $num1 + $num2;
break;
case "subtract":
$result = $num1 - $num2;
break;
case "multiply":
$result = $num1 * $num2;
break;
case "divide":
if($num2 == 0){
$error = "Cannot divide by zero.";
}
else{
$result = $num1 / $num2;
}
break;
}
if(!isset($error)){
$history = $_SESSION['history'];
if(count($history) > 9){
array_shift($history);
}
array_push($history, "$num1 $operator $num2 = $result");
$_SESSION['history'] = $history;
}
}
}
if(isset($_POST['clear'])){
unset($_SESSION['history']);
}
?>
<form method="post" action="calculator.php">
<input type="text" name="num1">
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">*</option>
<option value="divide">/</option>
</select>
<input type="text" name="num2"><br>
<input type="submit" name="submit" value="Calculate">
<input type="submit" name="clear" value="Clear History">
</form>
<?php
if(isset($error)){
echo "<p>$error</p>";
}
if(isset($_SESSION['history'])){
echo "<h3>History</h3>";
foreach(array_reverse($_SESSION['history']) as $value){
echo "<p>$value</p>";
}
}
?>
該示例使用PHP會話存儲來存儲歷史記錄。在每次成功計算之後,將新計算添加到$history數組中,並在向用戶顯示歷史記錄時,使用array_reverse()和foreach()函數輸出數組內容。當數組的大小超過10時,使用array_shift()函數從數組前面刪除最舊的計算。
總結
PHP計算器是一種常見的應用程序,用戶可以通過輸入數字和操作符計算結果。添加表單驗證、JavaScript實時計算和歷史記錄等功能,可以幫助提高用戶體驗並使應用更具實用價值。通過使用PHP、JavaScript和會話存儲,我們可以開發一個簡單和實用的計算器應用程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245818.html
微信掃一掃
支付寶掃一掃