多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > PHP empty() isset() is_null() 區別與性能比較

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

來源:程序員人生   發布時間:2013-12-31 09:34:40 閱讀次數:3603次

在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() 等,比較有局限性,都沒什么好說的,測試的類型如下:

  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. */ 

從代碼中可以看出,只要數據類型是否為空或假,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() 可以用來判定所有的數據類型是否為空或假,而 is_null 與 isset 基本一樣,只能用來判斷是否為NULL和未定義。

概括總結isset,empty,is_null區別:

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

  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"
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 黄色中文字幕在线观看 | 国产一区二区不卡视频 | 免费日韩毛片 | 男人看的网址 | 国产视频一区二 | 国产一级精品视频 | 中文字幕乱码视频 | 老司机午夜免费 | 一区二区三区中文字幕 | 亚洲精品一区二区中文 | 国内成人自拍视频 | 亚洲一区二区三区欧美 | 2021久久精品永久免费 | 国产精品第一 | 亚洲小视频在线观看 | 久久精品亚洲欧美va | 亚洲成a人片777777久久 | 伊人久久国产 | 亚洲美女激情视频 | 91久久色| 最新亚洲人成网站在线影院 | 中文字幕亚洲专区 | 手机在线视频观看 | 中文字幕在线精品视频入口一区 | 波多野结衣在线播放视频 | 激情欧美一区二区三区 | 亚洲成在人 | 久一在线 | 日韩欧美一区二区三区视频 | 欧美一级毛片欧美一级成人毛片 | 中文字幕亚洲无线码a | 欧美日韩国产另类一区二区三区 | 国产青草亚洲香蕉精品久久 | 成人叼嘿视频免费网站 | 性欧美videos另类hd高清 | 久青草青综合在线视频 | 亚洲吹箫 | 在线观看免费视频片 | 国内小情侣一二三区在线视频 | www.成人影院| 99久久精品一区二区三区 |