isset和empty的问题
时间:2021-07-01 10:21:17
帮助过:28人阅读
一个计算器小程序,红字部分用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;
}
}
?>
计算器小程序 结果:
回复讨论(解决方案)
http://www.gxlcms.com/article/24666.htm
if(empty($_POST)){
与
if(!isset($_POST)){
效果是一样的
$_POST 是超全局变量,由 php 内核产生,并不管是否是 post 提交
所以 isset($_POST) 恒为真
如果你发现 isset($_POST) 为假了,那就表示你 post 提交的数据的大小超过了 php 的默认值
显然这是严重的错误
isset:是否存在这个变量
empty:变量是否为null