国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP empty() isset() is_null() 區(qū)別與性能比較

2024-09-04 11:48:11
字體:
供稿:網(wǎng)友

在php中empty() isset() is_null()三個(gè)函數(shù)都是判斷是否為空的情況,但是如果我個(gè)要具體的深入去了解這個(gè)三個(gè)函數(shù)發(fā)現(xiàn)還是有許多的區(qū)別.

is_null(), empty(), isset(),這幾個(gè)函數(shù)以及 == ”,== array() 會(huì)在實(shí)際操作中經(jīng)常用到,因?yàn)楣δ芎茴愃?可能會(huì)忽視了他們的區(qū)別,一不小心就會(huì)給工作帶來很大的麻煩,下面將這幾種結(jié)構(gòu)列出來,供自己和大家參考,鑒于表述的準(zhǔn)確性,部分解釋來自英文原版手冊(cè),避免中文手冊(cè)的更新不及時(shí)以及翻譯不當(dāng)?shù)葐栴}。

is_null()

is_null(),bool,當(dāng)參數(shù)滿足 null 的三種情況時(shí),is_null() 將返回 TRUE。

null類型,以下情況將被認(rèn)定為 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,用于判定參數(shù)是否被設(shè)定并且不是 NULL。參數(shù)只能是變量。

如果沒有設(shè)置變量,或者變量被 unset() 掉,或者變量值為 NULL ,返回 FALSE,其它情況返回 TRUE。即如果不是 NULL 就屬于 isset 的范疇了,這一點(diǎn)和 is_null() 函數(shù)正好相反。

如果傳遞多個(gè)參數(shù),將取交集。即所有參數(shù)全部符合 isset() 時(shí)才返回 TRUE。

ps:defined(),bool,用于檢查常量是否被設(shè)置。

source:http://cn2.php.net/manual/en/function.isset.php

empty()

empty(),bool,主要用于判斷變量是否為空,參數(shù)只能是變量。

如下情況將被判定位空,代碼如下:

“” (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)

注:如果參數(shù)是未設(shè)置的變量,變量將被認(rèn)定為 NULL,不會(huì)報(bào)錯(cuò),返回 TRUE。

但是注意在 5.0.0 之后,Objects with no properties are no longer considered empty.

source:http://cn2.php.net/manual/en/function.empty.php

判定是否為空的方式還有 ==”,== array() 等,比較有局限性,都沒什么好說的,測(cè)試的類型如下:

  1. <?php 
  2. $a
  3. $b = false; 
  4. $c = ''
  5. $d = 0; 
  6. $e = null; 
  7. $f = array(); 
  8. ?> 

empty()

首先是empty的var_dump輸出:

  1. <?php 
  2. var_dump(emptyempty($a)); 
  3. var_dump(emptyempty($b)); 
  4. var_dump(emptyempty($c)); 
  5. var_dump(emptyempty($d)); 
  6. var_dump(emptyempty($e)); 
  7. var_dump(emptyempty($f)); 
  8. ?> 
  9. /* 
  10. 程序輸出為: 
  11. bool(true) 
  12. bool(true) 
  13. bool(true) 
  14. bool(true) 
  15. bool(true) 
  16. bool(true) 
  17. */ 

從代碼中可以看出,只要數(shù)據(jù)類型是否為空或假,empty()就輸出true。

isset()

再看看isset的輸出:

  1. var_dump(isset($a)); 
  2. var_dump(isset($b)); 
  3. var_dump(isset($c)); 
  4. var_dump(isset($d)); 
  5. var_dump(isset($e)); 
  6. var_dump(isset($f)); 
  7. /* 輸出 
  8. bool(false) 
  9. bool(true) 
  10. bool(true) 
  11. bool(true) 
  12. bool(false) 
  13. bool(true) 
  14. */ 

可以看出isset()只能用來判斷是否為NULL和未定義。

is_null()

最后是is_null的輸出:

  1. var_dump(is_null($a)); 
  2. var_dump(is_null($b)); 
  3. var_dump(is_null($c)); 
  4. var_dump(is_null($d)); 
  5. var_dump(is_null($e)); 
  6. var_dump(is_null($f)); 
  7. /*輸出 
  8. bool(true) 
  9. bool(false) 
  10. bool(false) 
  11. bool(false) 
  12. bool(true) 
  13. bool(false) 
  14. */ 

is_null 字面意思了。

由此可見 empty() 可以用來判定所有的數(shù)據(jù)類型是否為空或假,而 is_null 與 isset 基本一樣,只能用來判斷是否為NULL和未定義。

概括總結(jié)isset,empty,is_null區(qū)別:

剛才介紹的:檢查變量,以及參數(shù)類型,這個(gè)是這3個(gè)函數(shù)不同之處的基礎(chǔ),也是最容易被忽視的,看到網(wǎng)上有很多對(duì)這個(gè)3個(gè)函數(shù)進(jìn)行比較文章,很少涉及這些,下面我要說的,是在都檢查已存在變量情況下,不同之處,代碼如下:

  1. <?php 
  2. $a=100; 
  3. $b=""
  4. $c=null; 
  5. //isset檢查 
  6. echo "isset","$a=$a",isset($a)?"define":"undefine","rn"
  7. echo "isset","$b=$b",isset($b)?"define":"undefine","rn"
  8. echo "isset","$c=$c",isset($c)?"define":"undefine","rn"
  9. unset($b); 
  10. echo "isset","$b",isset($b)?"define":"undefine","rn"
  11. $b=0; 
  12. echo "rnrn"
  13. //empty檢查 
  14. echo "empty","$a=$a",!emptyempty($a)?"no empty":"empty","rn"
  15. echo "empty","$b=$b",!emptyempty($b)?"no empty":"empty","rn"
  16. echo "empty","$c=$c",!emptyempty($c)?"no empty":"empty","rn"
  17. unset($b); 
  18. echo "empty","$b",!emptyempty($b)?"no empty":"empty","rn"
  19. $b=0; 
  20. echo "rnrn"
  21. //is_null檢查 
  22. echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn"
  23. echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn"
  24. echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn"
  25. unset($b); 
  26. echo "is_null","$b",is_null($b)?"no null":"null","rn"

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 荣成市| 崇阳县| 当涂县| 龙口市| 天镇县| 新巴尔虎左旗| 阳东县| 天门市| 澎湖县| 达孜县| 伊川县| 普格县| 宜兴市| 肇庆市| 台南市| 吉安县| 临武县| 孟村| 无极县| 滨海县| 中山市| 防城港市| 岐山县| 宁明县| 揭阳市| 牟定县| 博乐市| 鹤峰县| 介休市| 宁陵县| 万荣县| 宜昌市| 台东市| 无为县| 工布江达县| 阳山县| 遂宁市| 云林县| 景谷| 汉沽区| 饶阳县|