isset和empty的问题
程序员文章站
2022-05-10 11:09:35
...
一个计算器小程序,红字部分用empty,结果显示正常,换成isset ,就不正常了.isset和empty在这个例子中有啥区别了,为什么会出现这种情况?
// 接收num1和num2
if( empty($_POST)){
$r='请输入数字';
}else{
$num1 = isset($_POST['num1']) ? (int)$_POST['num1'] : 0;
$num2 = isset($_POST['num2']) ? (int)$_POST['num2'] : 0;
// 接收运算符
$yunsuan=isset($_POST['yunsuan'])?$_POST['yunsuan']:'+';
switch ($yunsuan) {
case '+':
$r=$num1+$num2;
break;
case '-':
$r=$num1-$num2;
break;
case '*':
$r=$num1*$num2;
break;
case '/':
$r=$num1/$num2;
break;
default:
$r='请输入数字';
break;
}
}
?>
计算器小程序
// 接收num1和num2
if( empty($_POST)){
$r='请输入数字';
}else{
$num1 = isset($_POST['num1']) ? (int)$_POST['num1'] : 0;
$num2 = isset($_POST['num2']) ? (int)$_POST['num2'] : 0;
// 接收运算符
$yunsuan=isset($_POST['yunsuan'])?$_POST['yunsuan']:'+';
switch ($yunsuan) {
case '+':
$r=$num1+$num2;
break;
case '-':
$r=$num1-$num2;
break;
case '*':
$r=$num1*$num2;
break;
case '/':
$r=$num1/$num2;
break;
default:
$r='请输入数字';
break;
}
}
?>
结果:
回复讨论(解决方案)
http://www.jb51.net/article/24666.htm
if(empty($_POST)){
与
if(!isset($_POST)){
效果是一样的
$_POST 是超全局变量,由 php 内核产生,并不管是否是 post 提交
所以 isset($_POST) 恒为真
如果你发现 isset($_POST) 为假了,那就表示你 post 提交的数据的大小超过了 php 的默认值
显然这是严重的错误
isset:是否存在这个变量
empty:变量是否为null
上一篇: 配置php开发环境
下一篇: php操作配备mysql互为主从
推荐阅读
-
Android调试华为和魅族手机logcat不显示的问题
-
搭建SSH时的思考和遇到的几个问题的解决方法
-
Android 表情面板和软键盘切换时跳闪问题的解决方法
-
Windows 64 位 mysql 5.7以上版本包解压中没有data目录和my-default.ini及服务无法启动的快速解决办法(问题小结)
-
Java实现的求解经典罗马数字和阿拉伯数字相互转换问题示例
-
html5 canvas fillRect坐标和大小的问题解决方法
-
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
-
详解JS中定时器setInterval和setTImeout的this指向问题
-
Spring声明式事务和@Aspect的拦截顺序问题的解决
-
sql server 2000阻塞和死锁问题的查看与解决方法