本节主要是应用前面几节学习的内容来实现一个简单的计算器,示例中使用 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>
运行结果如下图所示: