isset函數(shù)我們多用于判斷變量是不是存在了,如isset($a)了,如果存在返回 true,否則返回false了,下面我們一起來看看.

isset函數(shù)是檢測變量是否設(shè)置.

格式:bool isset ( mixed var [, mixed var [, ...]] )

返回值:若變量不存在則返回 FALSE,若變量存在且其值為NULL,也返回 FALSE,若變量存在且值不為NULL,則返回 TURE,同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結(jié)果為 FALSE.

如果已經(jīng)使用 unset() 釋放了一個變量之后,它將不再是 isset(),若使用 isset() 測試一個被設(shè)置成 NULL 的變量,將返回 FALSE,同時要注意的是一個 NULL 字節(jié)("")并不等同于 PHP 的 NULL 常數(shù).

獲取用戶屬性時有的用戶能,有的用戶不能,同樣的邏輯為什么不能經(jīng)檢查使用了類似這樣的代碼:

  1. $userInfo=’abc’; 
  2. if(isset($userInfo['account'])) { 
  3. $account=$userInfo['account']; 
  4. else { 
  5. $account=$userInfo

發(fā)現(xiàn)$account得到的是空,查了一些資料也沒得到結(jié)果,做了一個實驗得到了結(jié)論,代碼如下:

$a=’abc;echo $a['account'];

結(jié)果是a,當(dāng)是字符串key沒有時,它會轉(zhuǎn)化成數(shù)字key,是0,所以得到了a,現(xiàn)在php5.4已經(jīng)修復(fù),趁這機會,整理了一下isset的用法,供大家借鑒,代碼如下:

  1. <?php 
  2.  
  3. $var = ''
  4.  
  5. if (isset($var)) { 
  6. print "This var is set set so I will print."
  7.  
  8. // 在后邊的例子中,我們將使用 var_dump函數(shù) 輸出 isset() 的返回值。 
  9.  
  10. $a = "test"
  11. $b = "anothertest"
  12.  
  13. var_dump( isset($a) ); // TRUE 
  14. var_dump( isset ($a$b) ); // TRUE 
  15.  
  16. unset ($a); 
  17.  
  18. var_dump( isset ($a) ); // FALSE 
  19. var_dump( isset ($a$b) ); // FALSE 
  20.  
  21. $foo = NULL; 
  22. var_dump( isset ($foo) ); // FALSE 
  23.  
  24. ?> 

這對于數(shù)組中的元素也同樣有效,代碼如下:

  1. <?php 
  2. $a = array ('test' => 1, 'hello' => NULL); 
  3. var_dump( isset ($a['test') ); // TRUE 
  4. var_dump( isset ($a['foo') ); // FALSE 
  5. var_dump( isset ($a['hello') ); // FALSE 
  6. //開源代碼phpfensi.com 
  7. // 'hello' 等于 NULL,所以被認(rèn)為是未賦值的。 
  8. // 如果想檢測 NULL 鍵值,可以試試下邊的方法。 
  9. var_dump( array_key_exists('hello'$a) ); // TRUE 
  10. ?> 

鍵 ‘b’ 的值等于 NULL,所以被認(rèn)為是未置值的,但是鍵’c'的值是空結(jié)果是true,空值是代表 有設(shè)置的 如果想檢測 NULL 鍵值,可以試試下邊的方法,代碼如下:

var_dump( array_key_exists(‘hello’, $a) ); // TRUE

警告:isset() 只能用于變量,因為傳遞任何其它參數(shù)都將造成解析錯誤,若想檢測常量是否已設(shè)置,可使用 defined() 函數(shù).

一些應(yīng)用中實例:PHP isset()對PHP參數(shù)判斷您可以使用 PHP isset() 來判斷一個參數(shù)是否被定義,注意如果該參數(shù)為空,或者"n"(NULL字節(jié))使用 PHP isset() 判斷之后,都會為TRUE,代碼如下:

  1. <?php 
  2. $weigeti=''//這里初始參數(shù)$weigeti=''; 
  3. $weigeti0=FALSE //這里初始參數(shù)為布爾FALSE 
  4. $weigeti2=NULL;  //這里定義$weigeti2=NULL,用isset()判斷返回FALSE 
  5. $weigeti3=""// 這里是NULL字節(jié),用isset()判斷,返回TRUE,不同于NULL常數(shù) 
  6. $weigeti4="www.phpfensi.com";  //這里定義會在下面給unset掉 
  7.  
  8. if(isset($weigeti)){ echo '參數(shù)$weigeti已經(jīng)設(shè)定,且值不為NULL'; } 
  9. // 參數(shù)$weigeti已經(jīng)賦值,而且值為$weigeti='',所以會輸出“參數(shù)$weigeti已經(jīng)設(shè)定” 
  10.  
  11. if(isset($weigeti0)){ echo '參數(shù)$weigeti0已經(jīng)設(shè)定,且值不為NULL'; } 
  12. // 參數(shù)$weigeti0已經(jīng)賦值,而且值為$weigeti=FALSE,所以會輸出“參數(shù)$weigeti已經(jīng)設(shè)定” 
  13.  
  14. if(isset($vget)){ echo '參數(shù)$vget已經(jīng)設(shè)定,且值不為NULL'; } 
  15. // 參數(shù)$vget根本就沒有被提及過,isset($vget)返回FALSE,不會輸出 
  16.  
  17. if(isset($weigeti2)){ echo '參數(shù)$weigeti2已經(jīng)設(shè)定,且值不為NULL'; } 
  18. // 這里是$weigeti2雖然被設(shè)定了,但是$weigeti2=NULL,所以isset($weigeti2)返回FALSE,不會輸出 
  19.  
  20. if(isset($weigeti3)){ echo '參數(shù)$weigeti3已經(jīng)設(shè)定,且值不為NULL'; } 
  21. // 參數(shù)$weigeti3 雖然 就是代表NULL字節(jié),但是這個不是常數(shù)NULL,所以$isset("")返回TRUE,會輸出 
  22.  
  23. unset($weigeti4);  //這里給$weigeti4 釋放掉了 
  24. if(isset($weigeti4)){ echo '參數(shù)$weigeti4已經(jīng)設(shè)定,且值不為NULL'; } 
  25. // 雖然開始已經(jīng)定義$weigeti4,而且還不為NULL,但是后來又給 unset() 掉了,所以不會輸出。 
  26. ?> 

PHP isset() 對數(shù)組的判斷在使用PHP數(shù)組的時候,需要判斷數(shù)組的某個值是否存在也可以使用 PHP isset() 函數(shù),代碼如下:

  1. <?php 
  2. $V=array
  3. 'WeiGeTi'=>'www.phpfensi.net'
  4. 'V-Get'=>array
  5.     'www'=>'www.phpfensi.com'
  6.     'e'=>'e.v-get.com'
  7.     'wuliu'=>array
  8.         'www'=>'wuliu.phpfensi.com'
  9.         'yiwu'=>'www.phpfensi.com' 
  10.      ) 
  11.    ) 
  12. ); 
  13.  
  14. // var_dump用于輸出TRUE 或 FALSE 
  15.  
  16. var_dump(isset($V['WeiGeTi'])); 
  17. // 數(shù)組$V 的$V['WeiGeTi'] ='www.phpfensi.com'已經(jīng)存在,所以輸出TRUE 
  18.  
  19. var_dump(isset($V['V-Get']['e'])); 
  20. //$V['V-Get']['e']='e.v-get.com' 所以輸出 TRUE 
  21.  
  22. var_dump(isset($V['V-Get']['wuliu']['yiwu'])); 
  23. // $V['V-Get']['wuliu']['yiwu']='www.phpfensi.com'所以輸出TRUE 
  24.  
  25. var_dump(isset($V['V-Get']['wuliu']['sh'])); 
  26. //根據(jù)數(shù)組,根本就沒有設(shè)定該項,所以輸出FALSE 
  27. ?> 

PHP isset()多參數(shù)判斷很多時候我們需要對多個參數(shù)進行判斷,可以使用isset($A)&&isset($B)……來判斷這些參數(shù)是不是都已經(jīng)設(shè)定了,而且都不為NULL,對此您可以使用isset()多參數(shù)來判斷是不是都設(shè)定了,代碼如下:

  1. <?php 
  2. isset($v1)&&isset($v2)&&isset($v3)…… 
  3. 等價于  
  4. isset($v1,$v2,$v3……) 
  5. ?> 

使用isset()判斷多個參數(shù),需要所有參數(shù)都被設(shè)定,且不為NULL,只要其中有一個參數(shù)沒有被設(shè)定過,或者為NULL,那么整個isset()就為FALSE.

PHP isset()判斷$_POST、$_GET、$_REQUEST等值,用isset() 或者empty() 判斷通過表單傳遞來的參數(shù)是isset() 最常見的用法,代碼如下:

  1. if(isset($_POST['from'])&&'E.V-Get.com'==$_POST['from']){ 
  2. echo '網(wǎng)站通過POST傳遞的來源是E.V-Get.com'

根據(jù)上面我們可以用isset判斷多參數(shù),在對表單傳遞來的值進行判斷就最方便了,代碼如下:

  1. <?php 
  2. //表單傳遞來user用戶名和 pass必須同時存在才能執(zhí)行 
  3. if(isset($_POST['user'],$_POST['pass'])){ 
  4. $user=$_POST['user']; 
  5. $pass=$_POST['pass']; 
  6. echo '您填寫的用戶名是:',$user,';密碼是:',$pass
  7. ?> 

PHP isset($var{字符串長度}) 判斷字符串長度用PHP判斷字符串是否存在或者判斷字符串長度是否超過某一數(shù)字或者判斷字符串長度是否為空一般使用strlen(),但是其實使用isset()性能更優(yōu)越,代碼如下:

  1. <?php 
  2. //三元,等同于 if(isset($_POST['from'])){$weigeti=$_POST['from'];}else{$weiget='';} 
  3.  
  4. $weigeti=isset($_POST['from'])?$_POST['from']:''
  5.  
  6. //判斷$weigeti存在,且字符串長度大于0 
  7. /* 菜鳥寫法   
  8. if(strlen($weigeti)>0){ 
  9. echo '$weigeti子符長度大于0';} 
  10. */ 
  11.  
  12. // 性能更優(yōu)越的寫法,判斷$weigeti第1個字符是否設(shè)定了 
  13. if(isset($weigeti{1})){ 
  14. echo '$weigeti字符長度大于0'
  15. ?>
轉(zhuǎn)載請注明來源:php中isset()函數(shù)變量判斷實例

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