PHP计算器IF语句失效求助:请求修复故障代码
修复后的PHP计算器代码
先看修复后的完整可运行代码:
<?php // 获取操作符,移除多余的PHP_EOL,避免输入内容带换行符 $operation = readline('Which operation do you want to use? (+, -, %) '); // 验证操作符有效性:用in_array简化判断逻辑 if (!in_array($operation, ['+', '-', '%'])) { echo "'$operation' is not a valid operation\n"; exit(); // 终止程序,防止无效输入后继续执行 } // 获取第一个数字并验证 $number1 = readline('First number? '); if (!is_numeric($number1)) { echo "'$number1' is not a number\n"; exit(); } // 转换为数值类型,避免字符串运算异常 $number1 = (float)$number1; // 获取第二个数字并验证 $number2 = readline('Second number? '); if (!is_numeric($number2)) { echo "'$number2' is not a number\n"; exit(); } $number2 = (float)$number2; // 执行运算并输出结果,用switch替代多个if更清晰 switch ($operation) { case '+': $result = $number1 + $number2; echo "Your result is: $result\n"; break; case '-': $result = $number1 - $number2; echo "Your result is: $result\n"; break; case '%': // 处理取模运算除数为0的异常 if ($number2 == 0) { echo "Cannot divide by zero\n"; exit(); } $result = $number1 % $number2; echo "Your result is: $result\n"; break; } ?>
核心问题修复说明
- 变量名拼写错误:原代码定义的变量是
$operation,后续运算判断却误用$operatie,导致所有运算分支都无法触发,已统一修正为$operation。 - 操作符验证逻辑错误:原代码
$operation != '+' || $operation != '-' || $operation != '%'永远为真(比如输入+时,会满足“不等于-”“不等于%”的条件),改用!in_array()简化且逻辑正确的判断方式。 - readline后多余的PHP_EOL:
readline()返回的是用户输入的纯内容,手动添加PHP_EOL会让输入值带换行符,导致和'+'等纯符号无法匹配,已全部移除。 - 数字验证逻辑错误:原代码
$number1 != is_numeric($number1)是字符串与布尔值的无效比较,改为!is_numeric($number1)直接判断输入是否为数字。 - 运算优先级问题:原代码
echo '...' . $number1 + $number2会先执行字符串拼接,再将拼接结果转为数值做加法,导致结果错误,改为先计算运算结果再输出。 - 异常情况处理:添加
exit()终止程序,避免无效输入后代码继续执行;增加取模运算时除数为0的判断,防止运行报错。
内容的提问来源于stack exchange,提问作者Harmen
相关产品推荐
相关产品推荐

