PHP问题

@Ta 2012-05-15 4084点击
<?php  
echo "<title>计算结果</title>";
&a=&_POST["i"];
&b=&_POST["ii"];
if(isset(&a,&b)){
echo "抱歉!所有值不能为空!";
}elseif(empty(&a)){
echo "抱歉!第一个值不能为!";
}elseif(empty(&b)){
echo "抱歉!第二个值能为空!";
}else{&aa=&a+&b;
&bb=&a-&b;
&cc=&a*&b;
echo "分别计算结果:";
echo "<br>";
echo "加法:&a+&b=&aa";
echo "<hr>";
echo "减法:&a-&b=&bb";
echo "<hr>";
echo "乘法:&a*&b=&cc";
}
?>
无论输入框内有值与或者无值都显示“所有值不能为空”怎样解决!这里&符号代表变量符。
回复列表(12|隐藏机器人聊天)
  • @Ta / 2012-05-15 / /
    if(($a==NULL) or ($b==NULL)
    {
    echo
    '所有输入框不能为空!';
    }
  • @Ta / 2012-05-15 / /
    谢谢了!在来试一下
  • @Ta / 2012-05-15 / /
    还是不行!
  • @Ta / 2012-05-15 / /
    干嘛写哪么麻烦?if(empty(&a)){echo "第一个不能为空";}else{if(empty(&b)){echo "第二个不能为空";}else{&cc=&a+&b; echo "{&a}+{&b}={&cc}";}}
  • @Ta / 2012-05-15 / /
    if(empty($a)&&empty($b)){echo '全空';}elseif(empty($a){echo '$a空';}elseif(empty($b)){echo '$b空';}else{echo '这两家伙都有东西,奇怪';}这样写就好了
  • @Ta / 2012-05-15 / /
    如果值存在 isset返回ture 所以、、、
  • @Ta / 2012-05-16 / /
    @五角圆星 @抹掉内记忆 isset()当变量存在时返回true。很明显$a和$b总是存在的,即使它们内容为空但还是存在的(你不能说空瓶子不存在吧),所以isset()总是返回true,所以if()语句总是成立,所以无论如何都输出第一条。
  • @Ta / 2012-05-16 / /
    @arox  一楼不行吗?
  • @Ta / 2012-05-16 / /
    @郑锋 不知道了,从不这么用
  • @Ta / 2012-05-16 / /
    @老虎会游泳 @摸掉内记忆 是的 只要表单提交了这个变量都不会是null 且只要被赋值了isset都返回ture 应该这样写if($a=="" or $b==""){...}
  • @Ta / 2012-05-16 / /
    @五角圆星 
    事实上是因为它写了
    $a=…;
    所以$a肯定是存在的。
    $a=NULL;
    var_dump(isset($a));
    //输出boolean TRUE
    $a是存在的,虽然它是NULL
    而isset()是用来判断变量是否存在的,而不是变量是否为NULL
  • @Ta / 2012-05-16 / /
    我实验之后发现我错了,五角圆星是对了。
    isset()对值为NULL的变量返回false。
添加新回复
回复需要登录