在php中empty(),isset(),is_null()三個(gè)函數(shù)在很多朋友看來都差不多,但我們簡單想一下好像又不同,一個(gè)空值,一個(gè)是否是一個(gè)變量,是否為null,下面我來舉例來說明.

很多人對于 PHP 的 empty(),isset() 及 is_null() 三個(gè)函數(shù)的用法比較模糊,網(wǎng)上的資料也很多,但未必能講的清楚,下面給出一個(gè)測試實(shí)例,對于理解這三個(gè)函數(shù)的區(qū)別會有很大的好處.

測試的類型如下:

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

empty(),代碼如下:

  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. bool(true) 
  11. bool(true) 
  12. bool(true) 
  13. bool(true) 
  14. bool(true) 
  15. bool(true) 

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

isset(),代碼如下:

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

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

警告:isset() 只能用于變量,因?yàn)閭鬟f任何其它參數(shù)都將造成解析錯(cuò)誤,若想檢測常量是否已設(shè)置,可使用 defined()函數(shù).

當(dāng)要 判斷一個(gè)變量是否已經(jīng)聲明的時(shí)候 可以使用 isset 函數(shù)

當(dāng)要 判斷一個(gè)變量是否已經(jīng)賦予數(shù)據(jù)且不為空 可以用 empty 函數(shù)

當(dāng)要 判斷 一個(gè)變量 存在且不為空 先isset 函數(shù) 再用 empty 函數(shù)

比如檢測 $id 變量,當(dāng) $id=0 時(shí),用empty() 和 isset() 來檢測變量 $id 是否已經(jīng)配置,兩都將返回不同的值—— empty() 認(rèn)為沒有配置,isset() 能夠取得 $id 的值,代碼如下:

  1. $id=0; 
  2.     emptyempty($id)?print "It's empty .":print "It's $id .";  
  3.       //結(jié)果:It's empty . 
  4.     print "<br>"
  5.     !isset($id)?print "It's empty .":print "It's $id ."
  6.       //結(jié)果:It's 0 . 

這意味著,我們在使用變量處理函數(shù)時(shí),當(dāng)該變量可能出現(xiàn)0的值,使用 empty() 要小心,這個(gè)時(shí)候用 isset 取代它更明智一些.

當(dāng)一個(gè)php頁面的 URL 尾部參數(shù)出現(xiàn) id=0 時(shí)(比如:test.php?id=0),試比較,代碼如下 :

if(empty($id)) $id=1; - 若 id=0,id 也會為1

if(!isset($id)) $id=1; - 若 id=0,id 不會為1

可分開運(yùn)行以下代碼檢測上述推斷,代碼如下:

  1. if(emptyempty($id)) $id=1; 
  2.    print $id// 得到 1 
  3.  
  4.    if(!isset($id)) $id=1; 
  5. rint $id//得到 0 

is_null(),代碼如下:

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

is_null 字面意思了.

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

后來給大家附一張表,下面一張表可以很清楚的說明他們之間的關(guān)系:

變量                    empty          is_null          isset

$a=””                 true               false        true

$a=null                 true               true         false

var $a                  true              true           false

$a=array()              true               false          true

$a=false                true               false           true

$a=15                   false              false           true

$a=1                    false              false            true

$a=0                    true               false            true

$a=”0”                true               false            true

$a=”true”             false               false            true

$a=”false”            false               false            true

轉(zhuǎn)載請注明來源:php empty(), isset(), is_null()函數(shù)用法實(shí)例

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。