在平常的编程过程中,我发现empty和对变量取非基本上是一样的。
比如 $a=0 empty($a)和!$a是一样的
而这个$a,无论是空字符串,字符串0, 数字0, 布尔false, null ,基本上都是一样的。而任何不属于上述内容的东西,都可以在条件中当做真值来处理。所以不知道,if(empty($a))和if(!$a)是否可以通用
if($a) 和 if (!empty($a))是否可以通用?

解决方案 »

  1.   

    有差異,如果用empty,就算你的變量沒有定義都沒關係,但是如果用!非的話變量不定義是不行的.
    你測試看看下邊的兩行代碼就知道了
    <?PHP
    var_dump(empty($a));
    var_dump(!$a);
      

  2.   

    对于非输出的地方,比如判断,如if(),while()这样的地方是否有差异呢?
    比如$a没定义,但是if ($a) 依旧是假 if (!$a)依旧是真。
    是否就没有差异了?
      

  3.   

    http://php.net/manual/en/types.comparisons.php
    看empty和bool的区别。
      

  4.   

    在屏蔽掉 Notice 级别错误时,两者是一样的
      

  5.   

    查看官网empty的说明手册,很清楚的。
    如果怕报错,可以先用isset来试探是否有