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