在實際開發(fā)過程中赁还,我們經常會進行變量為空判斷,比如我們接收ajax傳遞過來的參數漏麦,在處理之前要進行判斷客税,以免訪問空的地址造成錯誤。
經常使用的方法有撕贞,empty($var), is_null($var),isset($var)
如何區(qū)分這三個方法霎挟,
1、empty()
的定義為:若變量已存在麻掸、非空字符串或者非零,則返回 false 值赐纱;反之返回 true脊奋。言外之意就是int 0,string '0'(用c語言的數據類型對比)
疙描,都會被判做空诚隙,也就是返回true,這是從java或者c轉php后會遇到的一個坑起胰。
2久又、is_null()
,檢測變量是否為NULL
效五。我們知道php中數據分為這樣幾種類型:字符串地消、整型、浮點型畏妖、布爾型脉执、數組、對象戒劫,NULL半夷,即string婆廊、int、float巫橄、bool淘邻、array,object湘换,NULL
宾舅。其中NULL
表示數據無值,null
是NULL
數據類型唯一可能的值枚尼,當聲明一個變量的時候贴浙,如果不賦值,則表示為null
,如$var;
與 $var = null;
是一樣的署恍,在這種情況下 is_null($var) = true
崎溃。
3、isset()
盯质,用于檢測變量是否存在(賦值袁串?聲明?),一般情況下用法跟is_null()
相反呼巷,有點互斥的意思囱修,雖然他倆區(qū)別還挺大,簡單來說isset()
是語句(可用理解為if...else
或者foreach
之流)王悍,而is_null()
是函數(就是你認識的函數)破镰。語句在編譯器編譯過程中,就會直接生成結果压储,而函數只有運行后才會知道結果鲜漩。
下面把這三個方法的一些常用并且易混的情況列舉如下:
變量 empty() is_null() isset()
$a="" true false true
$a=null true true false
var $a true true false
$a=array() true false true
$a=false true false true
$a=15 false false true
$a=1 false false true
$a=0 true false true
$a="0" true false true
$a=true false false true
$a=false true false true
對齊太費勁了!