empty與isset的用法及區別(轉載)

empty與isset的用法及區別

很多同學對empty和isset的區別並不清楚,在判斷變量是否爲空的時候往往混用,很多情況下,這兩個函數確實具有相同的判斷結果,所以並未發現什麼異常。但是依心在這裏要強調的一點事,empty和isset這兩個函數千萬不能混用,該用哪個就用哪個,否則當你判斷一個變量時,測試的時候可能沒發現問題,但是在上線之後出現各種各樣的數據後問題就顯現出來了。依心在這裏不重複文檔,只是按照依心的理解給大家分析一下。

empty,判斷一個變量是否爲空。包括變量沒有初始化,變量爲空字符串,變量值爲0,變量值爲null,變量值爲false,如$a=”,$a=’0′,$a=0,$a=null,$a=false等情況用empty判斷都是true,這裏大家要注意一下當$a=’null’時是返回false的,因爲此時$a爲字符串,而不是null類型,這與$a=’0′的情況是不一樣的,因爲$a=’0′即使是字符串,但也是0,至於php爲什麼會這樣設置,那就是它本身的問題,而不是我們該考慮的了。

isset,判斷一個變量是被被設置(初始化),只要你事先給變量賦值,無論是不是空置,它都返回true。如$a=”,,$a=0,這些變量看似是空值,但是實際上已經被賦值,所以用isset判斷,都會返回true。這裏注意一個變量類型,null,如果一個變量爲null,說明它還沒有被賦值,所以用isset會返回false。還有什麼情況下isset會返回false呢,比如$a=1;var_dump(isset($b));再比如$a=1;unset($a);var_dump($a);這兩種情況都會返回false,依心在此只是舉例兩種情況,並不侷限於這兩種情況。

依心寫到這裏,感覺區別這兩個函數還是挺容易的,關鍵在於理解他的意義。empty判斷一個變量是否爲空,isset判斷一個變量是否被初始化,僅此而已。

這篇文章當年不知道轉載誰的。呵呵,感覺對初學php的小夥伴挺有用的。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章