本节主要是应用前面几节学习的内容来实现一个简单的计算器,示例中使用 HTML 代码编写一个用户操作的计算器界面,然后使用 PHP 的流程控制判断用户操作的各种情况、计算用户输入的值,并动态输出计算结果。
同时示例中还使用了全局数组 $_POST,用来从表单中获取用户输入的信息,这里只需了解即可,后面我们会详细介绍,具体代码如下所示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>城东书院(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>
运行结果如下图所示: