在没输入num1和num2的情况下
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body>
<h1>简易计算器</h1>
<form action="#" method="post">
<input type="text" name="num1">
<select name="op">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
<option value="%">%</option>
</select>
<input type="text" name="num2">
<input type="submit" name="act" value="计算">
</form>
</body>
</html>
<?php
error_reporting(E_ALL&~E_NOTICE);
$act=$_POST['act'];
if($act){
$num1=$_POST['num1'];
$num2=$_POST['num2'];
$op=$_POST['op'];
if(is_numeric($num1)&&is_numeric($num2)){
if($op=='+'){
$res=$num1+$num2;
}elseif($op=='-'){
$res=$num1-$num2;
}elseif($op=='*'){
$res=$num1*$num2;
}elseif($op=='/'){
if($num2!=0){
$res=$num1/$num2;
}exit('0不能当做除数');
}elseif($op=='%'){
$res=$num1%$num2;
}else{
echo '你怎么做到的';
}echo "运算结果为:{$num1}{$op}{$num2}={$res}";
}
}else{exit('这不是数字');
}
正在回答
同学你好,1. 在正常测试时,是不会抑制错误的。当关闭抑制错误时,报错:未定义的变量,如图所示:
解决方法:可以先判断是否是post传值,如果时再进行赋值操作
2. 无法实现除法,因为同学在做判断时,少了else。代码如下:
<?php // error_reporting(E_ALL&~E_NOTICE); // $act=$_POST['act']; // 判断是否是post传值 if($_POST){ $num1=$_POST['num1']; $num2=$_POST['num2']; $op=$_POST['op']; if(is_numeric($num1)&&is_numeric($num2)){ if($op=='+'){ $res=$num1+$num2; }elseif($op=='-'){ $res=$num1-$num2; }elseif($op=='*'){ $res=$num1*$num2; }elseif($op=='/'){ if($num2!=0){ $res=$num1/$num2; } else { // 添加else 如果不添加会导致只要是除法计算都会提示 0不能当做除数 exit('0不能当做除数'); } }elseif($op=='%'){ $res=$num1%$num2; }else{ echo '你怎么做到的'; } echo "运算结果为:{$num1}{$op}{$num2}={$res}"; } else{ // 可以在输入非数字时进行提示,这不是数字。 exit('这不是数字'); } }else{ // 未输入内容是可提示可以进行计算 exit('可输入数字,进行计算哦!'); }
祝学习愉快!
- 参与学习 人
- 提交作业 626 份
- 解答问题 4930 个
想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星