PHP empty() isset() is_null() 区别与性能比较
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-17 09:58:11 浏览: 评论:0
在php中empty() isset() is_null()三个函数都是判断是否为空的情况,但是如果我个要具体的深入去了解这个三个函数发现还是有许多的区别.
is_null(), empty(), isset(),这几个函数以及 == ”,== array() 会在实际操作中经常用到,因为功能很类似,可能会忽视了他们的区别,一不小心就会给工作带来很大的麻烦,下面将这几种结构列出来,供自己和大家参考,鉴于表述的准确性,部分解释来自英文原版手册,避免中文手册的更新不及时以及翻译不当等问题。
is_null()
is_null(),bool,当参数满足 null 的三种情况时,is_null() 将返回 TRUE。
null类型,以下情况将被认定为 NULL:
it has been assigned the constant NULL.
it has not been set to any value yet.
it has been unset().
source:http://cn2.php.net/manual/en/language.types.null.php
isset()
isset(),bool,用于判定参数是否被设定并且不是 NULL。参数只能是变量。
如果没有设置变量,或者变量被 unset() 掉,或者变量值为 NULL ,返回 FALSE,其它情况返回 TRUE。即如果不是 NULL 就属于 isset 的范畴了,这一点和 is_null() 函数正好相反。
如果传递多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。
ps:defined(),bool,用于检查常量是否被设置。
source:http://cn2.php.net/manual/en/function.isset.php
empty()
empty(),bool,主要用于判断变量是否为空,参数只能是变量。
如下情况将被判定位空,代码如下:
“” (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
“0″ (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)
注:如果参数是未设置的变量,变量将被认定为 NULL,不会报错,返回 TRUE。
但是注意在 5.0.0 之后,Objects with no properties are no longer considered empty.
source:http://cn2.php.net/manual/en/function.empty.php
判定是否为空的方式还有 ==”,== array() 等,比较有局限性,都没什么好说的,测试的类型如下:
- <?php
- $a;
- $b = false;
- $c = '';
- $d = 0;
- $e = null;
- $f = array();
- ?>
empty()
首先是empty的var_dump输出:
- <?php
- var_dump(emptyempty($a));
- var_dump(emptyempty($b));
- var_dump(emptyempty($c));
- var_dump(emptyempty($d));
- var_dump(emptyempty($e));
- var_dump(emptyempty($f));
- ?>
- /*
- 程序输出为:
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- bool(true)
- */
从代码中可以看出,只要数据类型是否为空或假,empty()就输出true。
isset()
再看看isset的输出:
- var_dump(isset($a));
- var_dump(isset($b));
- var_dump(isset($c));
- var_dump(isset($d));
- var_dump(isset($e));
- var_dump(isset($f));
- /* 输出
- bool(false)
- bool(true)
- bool(true)
- bool(true)
- bool(false)
- bool(true)
- */
可以看出isset()只能用来判断是否为NULL和未定义。
is_null()
最后是is_null的输出:
- var_dump(is_null($a));
- var_dump(is_null($b));
- var_dump(is_null($c));
- var_dump(is_null($d));
- var_dump(is_null($e));
- var_dump(is_null($f));
- /*输出
- bool(true)
- bool(false)
- bool(false)
- bool(false)
- bool(true)
- bool(false)
- */
is_null 字面意思了。
由此可见 empty() 可以用来判定所有的数据类型是否为空或假,而 is_null 与 isset 基本一样,只能用来判断是否为NULL和未定义。
概括总结isset,empty,is_null区别:
刚才介绍的:检查变量,以及参数类型,这个是这3个函数不同之处的基础,也是最容易被忽视的,看到网上有很多对这个3个函数进行比较文章,很少涉及这些,下面我要说的,是在都检查已存在变量情况下,不同之处,代码如下:
- <?php
- $a=100;
- $b="";
- $c=null;
- //isset检查
- echo "isset","$a=$a",isset($a)?"define":"undefine","rn";
- echo "isset","$b=$b",isset($b)?"define":"undefine","rn";
- echo "isset","$c=$c",isset($c)?"define":"undefine","rn";
- unset($b);
- echo "isset","$b",isset($b)?"define":"undefine","rn";
- $b=0;
- echo "rnrn";
- //empty检查
- echo "empty","$a=$a",!emptyempty($a)?"no empty":"empty","rn";
- echo "empty","$b=$b",!emptyempty($b)?"no empty":"empty","rn";
- echo "empty","$c=$c",!emptyempty($c)?"no empty":"empty","rn";
- unset($b);
- echo "empty","$b",!emptyempty($b)?"no empty":"empty","rn";
- $b=0;
- echo "rnrn";
- //is_null检查
- echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn";
- echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn";
- echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn";
- unset($b);
- echo "is_null","$b",is_null($b)?"no null":"null","rn";
Tags: empty isset is_null
- 上一篇:php中拆分和组合字符串函数介绍
- 下一篇:php获取url参数程序代码总结
相关文章
- ·empty 和 is_null有什么区别?(2013-11-29)
- ·php empty()函数详细(2013-11-30)
- ·php Warning:strstr()[function.strstr]:Empty delimiter(2013-12-04)
- ·php使用empty()函数要注意事项(2014-01-05)
- ·php中empty(), is_null(), isset()函数区别(2014-02-09)
- ·关于php函数isset和empty的一些误解(2014-06-11)
- ·再谈php中empty与isset区别详解(2014-09-13)
- ·php empty(), isset(), is_null()函数用法实例(2014-09-13)
- ·PHP isset()函数与empty()函数区别(2014-09-19)
- ·为什么要在PHP中同时检查isset()和!empty()函数(2019-12-16)
- ·PHP中isset()和empty()函数有什么区别?(2020-01-31)
- ·PHP empty函数报错解决办法(2020-10-19)
- ·PHP5.5和之前的版本empty函数的不同之处(2021-02-19)
- ·PHP中检查isset()和!empty()函数的必要性(2021-11-07)
- ·PHP中的empty、isset、isnull的区别与使用实例(2021-11-13)
- ·php中isset与empty函数的困惑与用法分析(2021-12-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)