摘要:如果還有人問你兩者區別,馬上甩出這種圖有興趣可以往下閱讀,官方手冊給出的例子手冊這是一張將區別的表格,從表格中我們可以發現返回值等同返回值等同。
簡單談一下isset和empty的區別?
如果你是在面試,碰巧面試官提了這個問題。你可以這樣回答:
如果變量值為0、空字符串、空數組等等,empty認為它是空的,而isset認為它不是空的。
如果變量不存在,isset和empty都認為它是空的。
建議使用isset函數,避免使用empty掉坑。
如果你想了解他們之間更詳細的區別,請繼續往下看...
一張圖徹底弄清用ProcessOn畫了一張圖片
注意:
為了方便對比, 這里對empty函數取反了。注意是 !empty()
""、0、"0"、FALSE、array()...該條件沒有補全,可以自行測試
如果你看上去一頭霧水,請先暫時跳過這一小節
這就是isset empty對應不同變量時的返回結果,兩者的區別都匯聚在這張圖片中了。
綠色虛線框里isset的表現,黃色虛線框里是!empty的表現。可以看出,empty相比isset需要判斷更多的條件,才能確定返回結果。
如果你有些許地方不明白,或者記不住全部細節。下面我來告訴你怎么記住這張圖片的所有內容!
礦泉水的思考想象一下,現在桌子上有一個礦泉水瓶。瓶子可能有這4種狀況:
水瓶:瓶子里有水
空氣瓶:水喝完了,瓶子里面只有空氣
真空瓶:瓶子拿去抽了真空,里面啥都沒有
桌面上沒有瓶子
把變量類比成礦泉水瓶,對應4種狀態:
小學生empty 和 中學生isset一般值:存儲單元里面放著一般的值
空氣值:變量為 ""、0、"0"、FALSE、array()...
真空值:變量為NULL
變量不存在或沒有定義
假設我們可以用isset empty函數要判斷一個礦泉水瓶是不是空的,會有這樣的結果:
如果是空氣瓶,那么empty認為它是空的(它看起來的確是空的啊!),而isset卻認為它不是空的(它有空氣啊!)
如果是真空瓶,那么empty isset都會認為它是空的
如果是水瓶,那么empty isset都會認為它不是空的
可以看出,empty就是一個不懂科學的小學生,以為瓶子看起來是空的便是空瓶!果然還是太年輕啊~而isset是個學過物理的中學生,明白“真空”的概念——他清楚瓶子里還有空氣!
所以上面三種情況中第1條,老司機isset經驗豐富,得出了跟小學生empty不一樣的結論。
現在我們可以知道,如果用這兩個函數來判斷變量,結果會是這樣:
如果是空氣值( ""、0、"0"、FALSE、array()...),那么empty認為它是空的,而isset認為它不是空的
如果是真空值(NULL),那么empty isset都認為它是空的
如果是一般值(除了這兩種情況,也就是說瓶子里面有水),那么empty isset都認為它不是空的
這就是在一開始給出的面試回答。現在,理解起來是不是很容易呢?
詳細對比 isset()函數格式:bool isset ( mixed var [, mixed var [, ...]] )
功能:檢測變量是否設置
返回值:
若變量不存在則返回 FALSE
若變量存在且其值為NULL,也返回 FALSE
若變量存在且值不為NULL,則返回 TURE
同時檢查多個變量時,每個單項都符合上一條要求時才返回 TRUE,否則結果為 FALSE
更多說明:
使用 unset() 釋放變量之后,它將不再是 isset()。
PHP函數isset()只能用于變量,傳遞任何其它參數都將造成解析錯誤。
檢測常量是否已設置可使用 defined() 函數。
格式:bool empty ( mixed var )
功能:檢查一個變量是否為空
返回值:
若變量不存在則返回 TRUE
若變量存在且其值為""、0、"0"、NULL、FALSE、array()、var $var以及沒有任何屬性的對象,則返回 TURE
若變量存在且值不為""、0、"0"、NULL、FALSE、array()、var $var以及沒有任何屬性的對象,則返回 FALSE
更多說明:
empty()的返回值=!(boolean) var,但不會因為變量未定義而產生警告信息。參見轉換為布爾值獲取更多信息。
empty() 只能用于變量,傳遞任何其它參數都將造成Paser error而終止運行。
檢測常量是否已設置可使用 defined() 函數。
現在我們把礦泉水和變量放到一起,畫出最完整的區別圖:
如果能你能讀懂前文內容,你將會徹底理解這兩張圖,往后isset empty區別就印刻在腦海里了。如果還有人問你兩者區別,馬上甩出這種圖~
有興趣可以往下閱讀,官方手冊給出的例子...
PHP 手冊這是一張將empty isset if($var)區別的表格,從表格中我們可以發現:
isset() 返回值等同 !is_null()
empty() 返回值等同 !boolean($x)。if($x)其實是先把變量轉換成boolean類型,再進行條件判斷
如果$var不存在,if($x) 語句會讓php發生E_NOTICE級別異常,但不是致命錯誤,依舊可以執行腳本;參考empty($x)和 isset($x)不會報告任何異常
PHP isset()與empty()的使用區別詳解_腳本之家
PHP: PHP 類型比較表 - Manual
轉載本文由1nFrastr編寫,轉載請注明出處!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28936.html
摘要:規定要反轉的字符串。參考文檔實現字符串翻轉包含中文漢字參考處理漢字官方文檔函數最下面給出了支持的方案三用法區別以及之間關系用法如果是非空或非零的值,則返回。若想檢測常量是否已設置,可使用函數。 一、foreach 第一題: //1.for循環執行幾次 //for($i=0;$i=1;$i++){ // echo $i; //} $i==1條件很成立,死循環 for($i=0;$...
摘要:理論原理同樣是簽發,只不過這次由服務端來簽發,然后將通過發送給客戶端,客戶端需要先取到圖片資源,注意這里返回的應該是一個合法的二進制流,然后從中取出,同時展示給用戶。 前言 在傳統的 Web 開發過程中,處理圖形驗證碼很簡單,只需要在后臺用隨機字符串生成一個圖片,將驗證碼內容放進 Session 即可,用戶提交表單時從 Session[1] 取出判斷即可。 但是現如今,越來越推崇 AP...
摘要:用法如果是非空或非零的值,則返回。如果已經使用釋放了一個變量之后,它將不再是。若使用測試一個被設置成的變量,將返回。同時要注意的是一個字節并不等同于的常數。 1.empty用法bool empty ( mixed var)如果 var 是非空或非零的值,則 empty() 返回 FALSE。換句話說,、0、0、NULL、FALSE、array()、var $var; 以及沒有任何屬性的...
摘要:由于協議中沒有定義任何狀態碼,所以除非在某些試驗條件下,服務器禁止向此類客戶端發送響應。表示要完成請求,需要進一步操作。 最近在廣州找工作,大四狗,讀著三本前兩年剛升二本的學校,文科生,好像一切條件都非常不利,但我還是毅然選擇這條路——拍黃片,人不能固步自封,還是要拓展一下自己的知識面,不能只學php而不拓展視野,還是要學學python、java、前端這些面試得有點心塞,各種因為學歷被...
閱讀 2089·2021-11-02 14:48
閱讀 2763·2019-08-30 14:19
閱讀 2934·2019-08-30 13:19
閱讀 1302·2019-08-29 16:17
閱讀 3239·2019-08-26 14:05
閱讀 2994·2019-08-26 13:58
閱讀 3082·2019-08-23 18:10
閱讀 1110·2019-08-23 18:04