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