+ -
当前位置:首页 → 问答吧 → empty与is_null函数的使用问题

empty与is_null函数的使用问题

时间:2011-09-06

来源:互联网

empty函数对于 ""、0、"0"、NULL、FALSE、array()、var $var以及没有任何属性的对象都被认为是空
is_null检测变量是否为空

但看到很多人判断某变量不为空的写法都是:
if(!empty($var) and !is_null($var)){....}
empty也能检测NULL,为什么还要配合使用is_null函数来检测呢??

作者: net920   发布时间: 2011-09-06

回复  imint0

Good, look below the demonstration
net920 发表于 2011-9-6 09:57
  1. var_dump(empty($_GET['do']));
  2. var_dump(is_null($_GET['do']));
复制代码

a.php?do

作者: imint0   发布时间: 2011-09-06

为什么有了include 还要require呢

作者: skiden   发布时间: 2011-09-06

我经常这样写: if(!empty($var) && $val != ''){....}

作者: 北极猫   发布时间: 2011-09-06

回复 skiden


   这个大家都知道,include和require性质不同。可是现在很多人就是使用了empty又使用is_null ,是不是有点多余??empty已经可以检测null了,为什么还要结合使用is_null来检测呢。如果你要这样问我,那我就想不明白,为什么没人这样写:?

include 'aa.php';
require 'aa.php';

作者: net920   发布时间: 2011-09-06

回复 北极猫


   empty也可以检测空字符串呀,为什么你还要加上   $var!=''  呢??

作者: net920   发布时间: 2011-09-06

is_null相对于empty是更精确的判断吧
只有判断变量是否是null时才会使用is_null,所以这个函数使用的相当少

作者: phpin   发布时间: 2011-09-06

发现现在的ppc动手能力太弱, 没人愿意用代码讲话.
还是看哥的.
  1. $a = null; // true
  2. $b = 0;  // false
  3. $c = ''; // false
  4. unset($c); // true

  5. var_export(is_null($c));
复制代码

作者: spser   发布时间: 2011-09-06

回复 imint0

Good, look below the demonstration

  1. <?php
  2. $var1='';
  3. $var2=NULL;
  4. var_dump(empty($var1));
  5. var_dump(empty($var2));
  6. var_dump(is_null($var1));
  7. var_dump(is_null($var2))
  8. ?>
复制代码

作者: net920   发布时间: 2011-09-06

imint0  刚才举了个例子。reuqest   aa.php?do
  1. var_dump(empty($_GET['do']));
  2. var_dump(is_null($_GET['do']));
复制代码
也对,但是我们知道,GET请求,若没有指定传参的值,那么传参值为空串而不是NULL。
假如我们判断的对象不是GET传值呢?

作者: net920   发布时间: 2011-09-06

看到很多人

看谁这么写了?

作者: aCat   发布时间: 2011-09-06

回复 aCat


   真得很多人,我们公司其它人都这样写。。。

作者: net920   发布时间: 2011-09-06

回复  aCat


   真得很多人,我们公司其它人都这样写。。。
net920 发表于 2011-9-6 10:04



   就你们公司吧。。。我咋没见过有人这么写。

作者: aCat   发布时间: 2011-09-06

回复 aCat


   所以我很纠结呀,干嘛多此一举。但这两个函数对于GET传参还是有区别的。   若GET传参没有定义指,那么empty返回TRUE,is_null返回FALSE

作者: net920   发布时间: 2011-09-06

回复  aCat


   所以我很纠结呀,干嘛多此一举。但这两个函数对于GET传参还是有区别的。   若GET传参没有 ...
net920 发表于 2011-9-6 10:07



   你不问当事人,跑论坛来问了,真是。。。

作者: aCat   发布时间: 2011-09-06

回复 aCat

他们回复我说,网上都这样写。。。你叫我怎么搞。

作者: net920   发布时间: 2011-09-06

当变量的值为NULL时, empty仍将变量表示为空.这会使程序运行出现问题. 对于字符串的判断empty() 函数不好用. 往往用于判断数组是否为空.
如果是不确定的情况下,可以使用($var != '')这种表达式检查变量的内容是否为空更为稳妥.然而这种方法并不能判断空数组

NULL值的变量相当于没有声明的变量,可以用isset() 或者 is_null() 来判断.

作者: 北极猫   发布时间: 2011-09-06

回复  aCat

他们回复我说,网上都这样写。。。你叫我怎么搞。
net920 发表于 2011-9-6 10:11

他们算个鸟蛋, 这帮北大青鸟出来的混混.
让他们都给我闭嘴, 用代码说话.

作者: 冯.于安   发布时间: 2011-09-06

回复 冯.于安


   呵呵,莫发脾气。这PHP怪问题是很多的。每个人的写法不同,当然有很多误导。

作者: net920   发布时间: 2011-09-06

于老头今天脾气好大

作者: 北极猫   发布时间: 2011-09-06

回复 北极猫


   嗯,谁把他惹毛了。

作者: net920   发布时间: 2011-09-06

很少这样使用,判断是否为空就直接使用empty

作者: piresion   发布时间: 2011-09-06

的确有人这样写,而且是老外写的。
PHPMYADMIN源码中就有这种写法:
if (empty($vrow[$field]) && is_null($vrow[$field])) {
    $vrow[$field] = date('Y-m-d H:i:s', time());
}

作者: net920   发布时间: 2011-09-06

回复 北极猫


   嗯,谁把他惹毛了。

作者: net920   发布时间: 2011-09-06

很少这样使用,判断是否为空就直接使用empty

作者: piresion   发布时间: 2011-09-06

的确有人这样写,而且是老外写的。
PHPMYADMIN源码中就有这种写法:
if (empty($vrow[$field]) && is_null($vrow[$field])) {
    $vrow[$field] = date('Y-m-d H:i:s', time());
}

作者: net920   发布时间: 2011-09-06

相关阅读 更多

热门下载

更多