在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";
波比源码 » PHP empty() isset() is_null() 区别与性能比较
buy levofloxacin pill levofloxacin 250mg us
buy avodart 0.5mg online flomax buy online zofran pill
spironolactone 100mg uk purchase propecia online buy diflucan online
purchase ampicillin generic cephalexin 500mg us buy erythromycin 500mg generic
oral sildenafil order careprost methocarbamol 500mg cost
cost suhagra 50mg sildenafil buy online estrace 1mg pill
order lamotrigine 200mg online order minipress 1mg retin cream us
order tadalis without prescription order avana 200mg online voltaren for sale online
isotretinoin 10mg ca amoxicillin 1000mg generic buy zithromax 250mg generic
buy generic indocin 75mg terbinafine 250mg cost buy amoxicillin for sale
order isotretinoin online cheap order azithromycin for sale ivermectin order
ramipril pill azelastine without prescription order astelin 10ml online
buy terazosin 5mg without prescription actos over the counter buy sulfasalazine 500mg
fosamax pills paracetamol us generic pepcid 40mg
order imdur 20mg imuran 50mg over the counter order telmisartan 80mg pills
bupropion price atomoxetine cost quetiapine 50mg usa
buy molnupiravir generic order molnunat 200mg generic lansoprazole cheap
purchase zoloft without prescription How to get viagra viagra next day delivery
cialis 5mg for sale buy cialis 5mg for sale order symmetrel 100 mg for sale
naltrexone sale purchase aripiprazole generic purchase abilify generic
avlosulfon usa purchase fexofenadine buy aceon 8mg online
buy provera 10mg without prescription oral periactin 4mg order periactin generic
buy modafinil stromectol 6mg for sale ivermectin 12mg pills for humans
buy fluvoxamine 100mg sale order glipizide 5mg for sale glipizide order online
accutane medication isotretinoin for sale online buy prednisone 40mg online
azithromycin generic cheap prednisolone pill order neurontin pills
cialis on line generic cialis real viagra pharmacy prescription
lasix 100mg usa order doxycycline 100mg sale plaquenil medication
tadalafil over counter cialis pill buy clomipramine for sale
cost sporanox 100mg sporanox over the counter tindamax canada
clozaril cost buy clozapine 100mg generic buy decadron for sale
prilosec 10mg sale purchase omeprazole best casinos
linezolid uk online money poker real money blackjack
order generic lopressor 100mg tenormin uk purchase levitra online
cost xenical 120mg diltiazem medication buy acyclovir 800mg
rx pharmacy online cialis buy inderal 20mg order plavix 75mg online
cialis on line buy cialis 5mg pill buy clopidogrel online cheap
domperidone brand sumycin 250mg without prescription purchase flexeril generic
buy imitrex online cheap dutasteride pill avodart tablet
golden nugget online casino casino slot free online casino real money
generic flomax 0.4mg cheap tamsulosin 0.4mg order aldactone 100mg without prescription
simvastatin 10mg for sale propecia 5mg pill cheap proscar 5mg
purchase flagyl sale buy trimethoprim for sale bactrim online
cephalexin 500mg cheap order cephalexin 500mg for sale erythromycin 500mg pills
cialis 20mg drug viagra 100mg brand viagra overnight shipping