isset()和 empty()两个函数经常在表单传值中,确认控件是否使用并赋值,但有一点我不太明白
假设有一输入类文本控件,name="a"
有如下判定条件:if(isset($_POST_["a"]) && !empty($_POST["a"]))
1、如果控件被赋值,那是不是isset() 函数就认定它已被设置?
2、如果赋的值是一个“空格”,不就符合上述条件了吗?这个判定条件还有什么意义呢?
3、另外,如果被赋值,isset()就会判定已设置,且empty()会判定不为空,那这两个函数的作用不就一样了吗?

解决方案 »

  1.   

    如果$_POST['a'] = = '0'或者$_POST['a'] == 0
    isset是真 但是!empty是假
    这里就体现出了empty的作用
    ===============================
    empty ()
    ""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 
      

  2.   

    1.yes
    2.意义在于你对“空”的理解,程序不认为空格是空,只有人才会理解为空
    3.no,你测试下表单不填任何东西提交试试,这是第一个条件是true,第二个条件false
      

  3.   

    1、是
    2、所以要加上一些处理,如正则之类
    3、如查是"",0,"0",NULL,FALSE,空数组,空变量,空对象则empty() 返回TRUE,
       isset()用来检测非NULL值.