程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php 檢測一個變量是否設置時,empty()能代替isset()嗎?

php 檢測一個變量是否設置時,empty()能代替isset()嗎?

編輯:關於PHP編程

我們先來復習一下empty和isset   empty — 檢查一個變量是否為空   ""、0、"0"、NULL、FALSE、array()、var $var; 以及沒有任何屬性的對象都將被認為是空的,如果 var 為空,則返回 TRUE   isset — 檢測變量是否設置     檢測變量是否設置,並且不是 NULL。 即:變量未設置,返回false; 變量為NULL,返回false   php手冊解釋的比較清楚了,可如果一個變量未設置時,empty返回什麼結果呢?     [php]  var_dump(empty($undefined));     var_dump(empty($undefined));結果是:bool(true)    可見empty也可以起到檢測變量是否設置的目的。那麼該不該使用empty代替isset呢?   我覺得如果僅僅是判斷一個變量存不存在,那麼該使用isset,因為isset的含義很清晰,就是干這個用的,也利於對代碼的閱讀。   當既要判斷變量存在,又有判斷變量不為0,'',空數組等情況,可以用   [php]  if(!empty($var))  代替   if(isset($var) && !empty($var))     if(!empty($var))  代替   if(isset($var) && !empty($var))當要判斷一個變量是否是NULL時,就必然不能使用isset了。          下面再來引申一些內容:   isset和empty的性能?   其實isset和empty的性能都很好,差別不大。還要說一點是它們都是語句,不是函數,想要具體看一下這方面的內容的,可以看鳥哥的這篇文章《isset和is_null的區別》   語句是不能被可變函數調用的,此外,在isset和empty裡是不能接受函數的返回值當做參數的,比如這樣是不行的     [php]  empty(intval('3'));   //Fatal error: Can't use function return value in write context     empty(intval('3')); //Fatal error: Can't use function return value in write context 但是,目前最新的PHP5.5的發布支持了這一特性,即能夠在empty中使用任意表達式:     [php]  function always_false() {       return false;   }      if (empty(always_false())) {       echo "This will be printed.\n";   }     function always_false() {     return false; }   if (empty(always_false())) {     echo "This will be printed.\n"; } 將輸出:     This will be printed.                  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved