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

首頁 > 開發 > PHP > 正文

淺析php中empty與isset區別

2024-05-04 21:58:08
字體:
來源:轉載
供稿:網友

empty() 判斷一個變量是否為/"空/",isset() 判斷一個變量是否已經設置,正是這種所謂的/"顧名思義/",令我開始時走了些彎路,當一個變量值等于0時,empty()也會成立(True),因而會發生一些意外.

empty是判斷變量值是非空或非零的值,對應空定義包括:""(空字符串)、0、"0"、NULL、FALSE、array()和$var(只聲明但未賦值),也就是說當變量值為上述這些,empty返回TRUE,其他的都返回FALSE.

isset是檢測變量是否設置,并且不是 NULL,變量設置可以從幾個方面來說,1:最簡單的就是變量是否先聲明和賦值;2:array中是否存在對應的index或key;3:object中是否存在對應的屬性。

從上面的兩個function定義可以看到,在某些情況下,兩者可以公用,但其區別還是很大的,另外它們都只能檢測變量,檢測任何非變量的東西都將導致解析錯誤,例如直接檢查另一個function的返回值(empty(otherFunction())),你將看到"Fatal error: Can't use function return value in write context in"這樣的錯誤.

另外isset可以一次檢查多個變量,例如:isset($var1, $var2, $var3),當這三個值分別的isset都為TRUE結果為TRUE,否則結果為FALSE.

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

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

這意味著,我們在使用變量處理函數時,當該變量可能出現0的值,使用 empty() 要小心,這個時候用 isset 取代它更明智一些,當一個php頁面的 URL 尾部參數出現 id=0 時(比如:test.php?id=0),試比較:

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

可分開運行以下代碼檢測上述推斷,代碼如下:

  1. if(empty($id)) $id=1; 
  2.     print $id; // 得到 1 
  3.  
  4.     if(!isset($id)) $id=1; 
  5.  print $id; //得到 0 
  6.  
  7. //測試代碼: 
  8.  
  9. $sep = "<br />"
  10.  
  11. echo 'test undeclared var empty : '
  12. var_dump(empty($var)); // TRUE 
  13. echo $sep . 'test undeclared var isset : '
  14. var_dump(isset($var)); // FALSE 
  15.  
  16. $var
  17. echo $sep . 'test declared var but no set value empty : '
  18. var_dump(empty($var)); // TRUE 
  19. echo $sep . 'test declared var but no set value isset : '
  20. var_dump(isset($var)); // FALSE, 變量申明未賦值,默認值為NULL 
  21.  
  22. $var = NULL; 
  23. echo $sep . 'test declared var and set value NULL empty : '
  24. var_dump(empty($var)); // TRUE 
  25. echo $sep . 'test declared var and set value NULL isset : '
  26. var_dump(isset($var)); // FALSE, 變量申明賦值為NULL 
  27.  
  28. $var1 = ''; $var2 = '0'; $var3 = 0; $var4 = FALSE; $var5 = array(); 
  29.  
  30. echo $sep . 'test '' empty : '
  31. var_dump(empty($var1)); // TRUE 
  32. echo $sep . 'test '0' empty : '
  33. var_dump(empty($var2)); // TRUE 
  34. echo $sep . 'test 0 empty : '
  35. var_dump(empty($var3)); // TRUE 
  36. echo $sep . 'test FALSE empty : '
  37. var_dump(empty($var4)); // TRUE 
  38. echo $sep . 'test array() empty : '
  39. var_dump(empty($var5)); // TRUE 
  40. echo $sep . 'test '', '0', 0, FALSE, array() isset : '
  41. var_dump(isset($var1, $var2, $var3, $var4, $var5)); // TRUE,  變量申明//并賦值為空字符串輸出的結果為: 
  42. test undeclared var empty : bool(true
  43. test undeclared var isset : bool(false
  44. test declared var but no set value empty : bool(true
  45. test declared var but no set value isset : bool(false
  46. test declared var and set value NULL empty : bool(true
  47. test declared var and set value NULL isset : bool(false
  48. test '' empty : bool(true
  49. test '0' empty : bool(true
  50. test 0 empty : bool(true
  51. test FALSE empty : bool(true
  52. test array() empty : bool(true
  53. test '''0', 0, FALSE, array() isset : bool(true

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正定县| 什邡市| 永济市| 阜康市| 汶川县| 申扎县| 图木舒克市| 安丘市| 策勒县| 阳江市| 遂昌县| 旬邑县| 依安县| 班玛县| 阳山县| 凤庆县| 中阳县| 平塘县| 久治县| 库尔勒市| 建昌县| 大兴区| 武安市| 安远县| 平阳县| 利辛县| 高密市| 台东县| 浦北县| 安平县| 车致| 商水县| 滁州市| 贡嘎县| 勐海县| 临泉县| 崇礼县| 上杭县| 榆中县| 土默特右旗| 潼南县|