php实现计算器
基本计算器实现
使用PHP创建一个简单的计算器可以通过HTML表单接收用户输入,PHP处理计算逻辑。以下是一个基础实现示例:
HTML表单部分 (calculator.html)
<form method="post" action="calculate.php">
<input type="number" name="num1" required>
<select name="operator">
<option value="add">+</option>
<option value="subtract">-</option>
<option value="multiply">×</option>
<option value="divide">÷</option>
</select>
<input type="number" name="num2" required>
<button type="submit">计算</button>
</form>
PHP处理逻辑 (calculate.php)
<?php
$num1 = $_POST['num1'];
$num2 = $_POST['num2'];
$operator = $_POST['operator'];
$result = 0;
switch ($operator) {
case 'add':
$result = $num1 + $num2;
break;
case 'subtract':
$result = $num1 - $num2;
break;
case 'multiply':
$result = $num1 * $num2;
break;
case 'divide':
$result = ($num2 != 0) ? $num1 / $num2 : '错误:除数不能为0';
break;
default:
$result = '无效操作';
}
echo "结果: " . $result;
?>
增强版计算器功能
增加更多数学运算和错误处理:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$num1 = floatval($_POST['num1']);
$num2 = isset($_POST['num2']) ? floatval($_POST['num2']) : null;
$operator = $_POST['operator'];
try {
switch ($operator) {
case 'sqrt':
if ($num1 < 0) throw new Exception('负数不能开平方');
$result = sqrt($num1);
break;
case 'power':
$result = pow($num1, $num2);
break;
case 'mod':
$result = $num1 % $num2;
break;
// 包含基础运算...
default:
throw new Exception('无效操作');
}
echo json_encode(['success' => true, 'result' => $result]);
} catch (Exception $e) {
echo json_encode(['success' => false, 'error' => $e->getMessage()]);
}
}
?>
面向对象实现
采用面向对象方式封装计算器逻辑:
class Calculator {
public function calculate($num1, $num2, $operator) {
if (!is_numeric($num1) || !is_numeric($num2)) {
throw new InvalidArgumentException('必须输入数字');
}
switch ($operator) {
case '+': return $num1 + $num2;
case '-': return $num1 - $num2;
case '*': return $num1 * $num2;
case '/':
if ($num2 == 0) throw new DivisionByZeroError('除数不能为零');
return $num1 / $num2;
default: throw new UnexpectedValueException('不支持的操作符');
}
}
}
// 使用示例
$calc = new Calculator();
try {
echo $calc->calculate(10, 5, '/');
} catch (Exception $e) {
echo '错误: ' . $e->getMessage();
}
安全注意事项
-
始终验证用户输入:
if (!is_numeric($num1) || !is_numeric($num2)) { die('请输入有效数字'); } -
对于除法操作必须检查除数:
if ($operator == 'divide' && $num2 == 0) { die('除数不能为零'); } -
考虑使用PHP过滤器:
$num1 = filter_input(INPUT_POST, 'num1', FILTER_VALIDATE_FLOAT);
这些实现方式涵盖了从基础到进阶的PHP计算器开发,可根据实际需求选择适合的方案。







